如何从图层创建Keras模型?

时间:2019-04-11 22:20:13

标签: python keras

这是一个奇怪的问题。我在名为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).

2 个答案:

答案 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)