我需要提供model1的输出作为model2的输入 .
A=keras.layers.Input(batch_shape=(3,500,500,3))
B=keras.layers.Conv2D(filters=3, kernel_size=3)(A)
model1=keras.models.Model(A,B)
C=keras.layers.Conv2D(filters=3, kernel_size=3)(B)
model2=keras.applications.vgg19.VGG19(input_tensor=B, weights='imagenet', include_top=False, pooling='avg')
#Error: You are trying to load a weight file containing 16 layers into a model with 17 layers.
正如错误消息所示,keras无法正确实现vgg net .
vgg19网包含23层(没有顶部) . 但是如果输入张量是另一个模型的输出,则层数会发生变化 .
vgg19_normal=keras.applications.vgg19.VGG19(input_tensor=A, weights=None, include_top=False, pooling='avg')
len(vgg19_normal.layers)
#23
vgg19_abnormal=keras.applications.vgg19.VGG19(input_tensor=B, weights=None, include_top=False, pooling='avg')
#input tensor B is the output of model1
len(vgg19_abnormal.layers)
#24
所以keras抱怨层数不相等 .
1 回答
我仍有一些疑问,例如我不明白
C
的用途 . 无论如何,这是我目前的想法:由此产生的
model2
拓扑结构为为了生成这个图像,我使用了keras.utils.plot_model .