【问题标题】:Cannot convert VGG16 layers to sequential无法将 VGG16 层转换为顺序层
【发布时间】:2018-11-15 01:02:10
【问题描述】:

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

vgg16_model = keras.applications.vgg16.VGG16()

模型的类型如下:

type(vgg16_model)

结果是:

tensorflow.python.keras.engine.training.Model

然后,我将 Sequential 模型定义为:

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>**

如果有人能帮我解决这个问题,那就太好了。

【问题讨论】:

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


    【解决方案1】:

    解决方案:

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

    from keras.applications.vgg16 import VGG16
    

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

    vgg16_model = keras.applications.vgg16.VGG16()
    

    所以,我犯了一个愚蠢的错误。修复方法如下:

    vgg16_model = VGG16()
    

    我意识到这个问题非常具体,可能对社区没有多大用处。尽管如此,我还是发布了解决方案,以防其他人再次面临它。

    【讨论】:

    • 你应该接受你自己对这个问题的回答作为解决方案。
    【解决方案2】:

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

    from keras.applications.vgg16 import VGG16
    
    vgg = VGG16(weights='imagenet', ...)
    model = Sequential(vgg.layers)
    

    【讨论】:

      猜你喜欢
      • 2012-11-24
      • 1970-01-01
      • 2021-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-17
      • 2019-03-16
      • 2019-03-07
      相关资源
      最近更新 更多