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

我正在尝试使用前 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()


qq_笑_17
浏览 324回答 3
3回答

胡子哥哥

我运行模型,错误是: 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')拟合模型并让我知道发生的任何错误。

芜湖不芜

你只从 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

撒科打诨

问题是您没有添加前 10 层,而是从顶部添加了第 10 层。此外,该层的输入应该具有 256 的倍数的通道。只需将代码替换为:model.add(keras.layers.Conv2D(256,(7,7),input_shape = (256,256,3),activation = 'relu'))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python