这是一个奇怪的问题。我在名为input_layers
的列表中构建了一些图层:
[<keras.layers.convolutional.Conv2D object at 0x1377628d0>, <keras.layers.convolutional.Conv2D object at 0x138eb69b0>, <keras.layers.core.Flatten object at 0x13778dda0>, <keras.layers.core.Dense object at 0x1377f16d8>]
我想以此构建并编译一个keras
模型。我该怎么办?
我尝试过:
new_model = Model(inputs=input_layers, outputs=output_layer)
但这会导致错误:
ValueError: Input tensors to a Model must come from `keras.layers.Input`. Received: <keras.layers.convolutional.Conv2D object at 0x1378fff60> (missing previous layer metadata).
答案 0 :(得分:2)
好吧,如果模型是顺序模型(似乎是这种情况),那么您可以简单地使用Sequential
类从层列表中构建模型:
from keras.models import Sequential
model = Sequential(layers_list)
有关更多信息,请参阅Keras文档中的Sequential model guide。
答案 1 :(得分:1)
我不知道这样做的目的是什么!
您可以直接将它们直接添加到模型中,即
inputs = Input(input_size)
conv1 = Conv2D(64, 3, activation = 'relu')(inputs)
conv1 = Conv2D(64, 3, activation = 'relu')(conv1)
pool1 = MaxPooling2D(pool_size=(2, 2))(conv1)
model = Model(input = inputs, output = conv10)
model.compile(optimizer = Adam(lr = 1e-4), loss = 'binary_crossentropy', metrics = ['accuracy'])
也不要忘记您必须指定模型的输入大小,因此对于您正在做的事情没有意义!
此外,如果模型是顺序的,则可以这样做
model = Sequential(your_list)