代码之家  ›  专栏  ›  技术社区  ›  Shamoon

如何从图层创建keras模型?

  •  -2
  • Shamoon  · 技术社区  · 7 年前

    这是个奇怪的问题。我在一个名为 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 回复  |  直到 7 年前
        1
  •  2
  •   today    7 年前

    好吧,如果模型是一个顺序模型(似乎是这样),那么你可以简单地使用 Sequential 类从层列表中构建模型:

    from keras.models import Sequential
    
    model = Sequential(layers_list)
    

    看看 Sequential model guide 有关更多信息,请参阅Keras文档。

        2
  •  1
  •   Jamal Alkelani    7 年前

    我不知道这样做的目的是什么!

    你可以简单地直接把它们添加到模型中。

    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)