无法将VGG16图层转换为连续的

时间:2018-11-15 01:02:10

标签: python tensorflow keras deep-learning vgg-net

我正在尝试使用VGG16预训练模型进行图像分类。同样,我做了以下事情:

vgg16_model = keras.applications.vgg16.VGG16()

模型的类型如下:

type(vgg16_model)

结果是:

tensorflow.python.keras.engine.training.Model

然后,我将顺序模型定义为:

model = Sequential()

然后,我尝试通过以下方式将vgg16_model转换为顺序的:

for layer in vgg16_model.layers:
    model.add(layer)

它向我显示了一个错误,如下所示:

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

如果有人可以帮助我,那将是很棒的事情。

2 个答案:

答案 0 :(得分:1)

解决方案:

我的错误是我的导入语句是:

from keras.applications.vgg16 import VGG16

然后,再次初始化模型时,我再次将其命名为:

vgg16_model = keras.applications.vgg16.VGG16()

所以,我这是一个愚蠢的错误。解决方法如下:

vgg16_model = VGG16()

我意识到这个问题非常具体,可能对社区没有太大帮助。不过,我还是发布解决方案,以防其他人再次面对它。

答案 1 :(得分:0)

一种更简单的方法是将图层直接传递给顺序模型实例,而不是使用for循环:

from keras.applications.vgg16 import VGG16

vgg = VGG16(weights='imagenet', ...)
model = Sequential(vgg.layers)