25

我是机器学习的新手。我正在关注这个关于微调 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
  • 张量流-gpu1.12.0
  • Python 3.6.0

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

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

4

4 回答 4

36

这不起作用,因为 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])
于 2019-03-24T15:38:35.267 回答
9

添加到@Manoj Mohan 的答案中,您可以添加一个input_layer到您的model使用input_layer中,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)
于 2019-11-21T21:46:10.847 回答
3

您不需要创建 InputLayer,您只需以与 Conv2D/其他层相同的方式导入 BatchNormalization 层,例如:

from tensorflow.keras.layers import Conv2D, Flatten, MaxPooling2D, Dropout, BatchNormalization

而不是将其作为独立的 Keras 层导入,即:

from tensorflow.keras.layers import Conv2D, Flatten, MaxPooling2D, Dropout
from keras.layers import BatchNormalization
于 2019-10-01T19:59:01.587 回答
0

上面的代码片段适用于TensorFlowversion 2.x。您可以通过使用以下命令升级 TensorFlow 来运行上述代码段:

pip install --upgrade tensorflow
于 2021-12-06T11:29:37.017 回答