为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 VGG19 keras 等前 10 层预训练模型?

如何使用 VGG19 keras 等前 10 层预训练模型?

qq_笑_17 2022-04-27 16:01:13
我正在尝试使用前 10 层 VGG19 进行图像分类任务的迁移学习。我尝试使用前 10 层,但是当我将它添加到顺序模型并显示摘要时,我得到了一个错误。basemodel = VGG19(include_top = False)    x = basemodel.layers[-10]    model = Sequential()    model.add(keras.layers.Conv2D(32,(7,7),input_shape = (256,256,3),activation = 'relu'))    model.add(x)    model.summary()
查看完整描述

3 回答

?
胡子哥哥

TA贡献1825条经验 获得超6个赞

我运行模型,错误是: ValueError: Input 0 is incompatible with layer block4_conv1: expected axis -1 of input shape to have value 256 but got shape (None, 250, 250, 32)

删除输入形状keras.layers.Conv2D 并将其添加到 basemodel:

basemodel = VGG19(include_top = False,input_shape=(256,256,3),weights='None')

或者如果你想使用 Imagenet:

basemodel = VGG19(include_top = False,input_shape=(256,256,3),weights='imagenet')

拟合模型并让我知道发生的任何错误。


查看完整回答
反对 回复 2022-04-27
?
芜湖不芜

TA贡献1796条经验 获得超7个赞

你只从 VGG 模型中提取了一层并以错误的方式连接它们。这是一种正确的方法:


basemodel = VGG19(include_top = False)    

model = tf.keras.Sequential(basemodel.layers[:10])

model.add(keras.layers.Conv2D(32, (7, 7), activation = 'relu'))

model.summary()

请注意,第一层VGG是 anInputLayer所以你应该使用basemodel.layers[:11].


请注意,要微调您的模型,最好修复 VGG 层的权重:


for layer in model.layers[:10]:

    layer.trainable = False


查看完整回答
反对 回复 2022-04-27
?
撒科打诨

TA贡献1934条经验 获得超2个赞

问题是您没有添加前 10 层,而是从顶部添加了第 10 层。此外,该层的输入应该具有 256 的倍数的通道。只需将代码替换为:

model.add(keras.layers.Conv2D(256,(7,7),input_shape = (256,256,3),activation = 'relu'))


查看完整回答
反对 回复 2022-04-27
  • 3 回答
  • 0 关注
  • 321 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号