无法将 VGG16 层转换为顺序
Cannot convert VGG16 layers to sequential
我正在尝试使用 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>**
如果有人能在这方面帮助我,那就太好了。
解决方案:
我的错误是我的导入语句是:
from keras.applications.vgg16 import VGG16
然后,当我初始化模型时,我再次调用它:
vgg16_model = keras.applications.vgg16.VGG16()
所以,我犯了一个愚蠢的错误。修复如下:
vgg16_model = VGG16()
我意识到这个问题非常具体,可能对社区没有太大用处。尽管如此,我还是发布了解决方案,以防其他人再次遇到它。
一种更简单的方法是将层直接传递给 Sequential 模型实例,而不是使用 for 循环:
from keras.applications.vgg16 import VGG16
vgg = VGG16(weights='imagenet', ...)
model = Sequential(vgg.layers)
我正在尝试使用 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>**
如果有人能在这方面帮助我,那就太好了。
解决方案:
我的错误是我的导入语句是:
from keras.applications.vgg16 import VGG16
然后,当我初始化模型时,我再次调用它:
vgg16_model = keras.applications.vgg16.VGG16()
所以,我犯了一个愚蠢的错误。修复如下:
vgg16_model = VGG16()
我意识到这个问题非常具体,可能对社区没有太大用处。尽管如此,我还是发布了解决方案,以防其他人再次遇到它。
一种更简单的方法是将层直接传递给 Sequential 模型实例,而不是使用 for 循环:
from keras.applications.vgg16 import VGG16
vgg = VGG16(weights='imagenet', ...)
model = Sequential(vgg.layers)