在Keras中创建Sequential模型时,我知道您在第一层中提供了输入形状。这个输入形状是否会产生隐式输入层?
例如,下面的模型明确指定了2个Dense图层,但这实际上是一个模型,其中3个图层由输入形状隐含的一个输入图层组成,一个隐藏的密集图层包含32个神经元,然后一个输出图层包含10个可能的产出?
model = Sequential([
Dense(32, input_shape=(784,)),
Activation('relu'),
Dense(10),
Activation('softmax'),
])
答案 0 :(得分:10)
嗯,实际上实际上是 一个隐含的输入层,即你的模型是一个好老的"神经网络有三层 - 输入,隐藏和输出。这在Keras Functional API中更明显可见(请查看文档中的example),其中您的模型将被编写为:
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)
实际上,这个隐式输入层是您必须仅在Sequential API中的模型的第一个(显式)层中包含input_shape
参数的原因 - 在后续层中,输入形状是从以前的输出(请参阅core.py
源代码中的comments)。
您还可以在tf.contrib.keras.layers.Input
启发时找到documentation。