【问题标题】:TypeError: The added layer must be an instance of class Layer. Found: <keras.engine.input_layer.InputLayer object at 0x7fc6f1b92240>TypeError:添加的层必须是类Layer的实例。找到:<keras.engine.input_layer.InputLayer object at 0x7fc6f1b92240>
【发布时间】:2019-02-18 07:10:53
【问题描述】:

我正在尝试将 vgg16 层添加到顺序模型,但得到问题标题中提到的错误

from keras.applications.vgg16 import VGG16

from tensorflow.contrib.keras.api.keras.models import Sequential
vgg_model = VGG16()
model = Sequential()
#print(model.summary())
for layer in vgg_model.layers:
        model.add(layer)

print(model.summary())

我正在使用 keras 2.2.4

TypeError: The added layer must be an instance of class Layer. Found: <keras.engine.input_layer.InputLayer object at 0x7fc6f1b92240>

【问题讨论】:

  • 为什么需要另一个模型?你不能用 vgg_model 吗?
  • 我必须使用这个模型来分类 10 个类。将从 vgg 添加直到 15 层。但是尝试添加完整的模型进行检查,但它不起作用。
  • 您可以为此使用函数式 API。
  • 你能帮我处理一下 sn-p 吗?还有为什么它不起作用,有什么想法吗?

标签: python keras conv-neural-network keras-layer


【解决方案1】:

假设您要删除最后一层并添加您自己的最后一个全连接层,该层有 10 个节点。实现这个keras功能API可以使用。

from tensorflow.contrib.keras.api.keras.models import Sequential
import keras
from keras_applications.vgg16 import VGG16
vgg_model = VGG16()

# replace the last layer with new layer with 10 nodes.
last_layer = vgg_model.layers[-2].output ## 
output = keras.layers.Dense(10, activation="softmax")(last_layer) 

model = keras.models.Model(inputs=vgg_model.inputs, outputs=output)
model.summary()


print(model.summary())

或者使用 include_top = False

vgg_model = VGG16(include_top=False)
vgg_output = vgg_model.outputs[0]
output = keras.layers.Dense(10, activation="softmax")(vgg_output)

model = keras.models.Model(inputs=vgg_model.inputs, outputs=output)

您可能想要使用预训练的权重。您可以通过使用权重参数来实现这一点

vgg_model = VGG16(weights='imagenet',include_top=False)

您可能想冻结一些图层。

number_of_layers_to_freeze = 10
vgg_model = VGG16(include_top=False)
for i in range(number_of_layers_to_freeze):
    vgg_model.layers[i].trainable = False
vgg_output = vgg_model.outputs[0]
output = keras.layers.Dense(10, activation="softmax")(vgg_output)

model = keras.models.Model(inputs=vgg_model.inputs, outputs=output)

【讨论】:

    猜你喜欢
    • 2020-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-02
    • 1970-01-01
    • 2019-08-14
    • 1970-01-01
    • 2020-06-08
    相关资源
    最近更新 更多