Keras顺序模型输入层

bla*_*tor 10 python machine-learning neural-network deep-learning keras

在Keras中创建Sequential模型时,我知道您在第一层中提供了输入形状.这个输入形状是否构成隐式输入层?

例如,下面的模型明确指定了2个Dense图层,但这实际上是一个模型,其中3个图层由输入形状隐含的一个输入图层组成,一个隐藏的密集图层包含32个神经元,然后一个输出图层包含10个可能的输出?

model = Sequential([
    Dense(32, input_shape=(784,)),
    Activation('relu'),
    Dense(10),
    Activation('softmax'),
])
Run Code Online (Sandbox Code Playgroud)

des*_*aut 14

嗯,它实际上一个隐含的输入层,即你的模型是一个"好老"神经网络的例子,有三层 - 输入,隐藏和输出.这在Keras Functional API中更明显可见(请参阅文档中的示例),其中您的模型将被编写为:

inputs = Input(shape=(784,))                 # input layer
x = Dense(32, activation='relu')(inputs)     # hidden layer
outputs = Dense(10, activation='softmax')(x) # output layer

model = Model(inputs, outputs)
Run Code Online (Sandbox Code Playgroud)

实际上,这个隐式输入层是您必须input_shape仅在Sequential API中的模型的第一个(显式)层中包含参数的原因- 在后续层中,输入形状是从先前的输出中推断出来的(参见)源代码中的注释core.py.

您也可以找到有关启发的文档tf.contrib.keras.layers.Input.