添加的图层必须是 Layer 类的实例。找到:<tensorflow.python.keras.engine.input_layer.InputLayer>

新手上路,请多包涵

我是机器学习的新手。我正在关注微调 VGG16 模型的 教程

使用此代码可以很好地加载模型:

 vgg_model = tensorflow.keras.applications.vgg16.VGG16()

但得到这个错误:

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

运行此代码时:

 model = Sequential()
for layer in vgg_model.layers[:-1]:
    model.add(layer)

依赖项:

  • 喀拉斯 2.2.3
  • 张量流 1.12.0
  • tensorflow-gpu1.12.0
  • 蟒蛇 3.6.0

我正在关注此 博客,但我想使用 VGG16。

解决此问题的任何帮助将不胜感激。太感谢了。

原文由 Rstynbl 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

这不会起作用,因为 tensorflow.keras 层正在添加到 keras 模型中。

 vgg_model = tensorflow.keras.applications.vgg16.VGG16()
model = keras.Sequential()
model.add(vgg_model.layers[0])

实例化 tensorflow.keras.Sequential()。这会起作用。

 model = tensorflow.keras.Sequential()
model.add(vgg_model.layers[0])

原文由 Manoj Mohan 发布,翻译遵循 CC BY-SA 4.0 许可协议

Adding to @Manoj Mohan’s answer, you can add an input_layer to your model using input_layer from Keras layers 如下:

 import keras
from keras.models import Sequential
from keras.layers import InputLayer

model = Sequential()
model.add(InputLayer(input_shape=shape, name=name))
....

如果您使用的是 TensorFlow 内置 Keras 则导入不同,其他内容仍然相同

import tensorflow as tf
import tensorflow.keras as keras
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import InputLayer

model = Sequential()
model.add(InputLayer(input_shape=shape, name=name))
....

来到主要部分,如果要将层导入顺序模型,可以使用以下语法。

 import keras
from keras.models import Sequential, load_model
from keras import optimizers
from keras.applications.vgg16 import VGG16
from keras.applications.vgg19 import VGG19

# For VGG16 loading to sequential model
model = Sequential(VGG16().layers)
# For VGG19 loading to sequential model
model = Sequential(VGG19().layers)

原文由 kgangadhar 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题