在Keras中创建顺序模型时,我知道您在第一层中提供了输入形状。然后,此输入形状会构成 隐式 输入层吗?
例如,下面的模型明确指定了2个密集层,但这实际上是一个3层模型,即由输入形状隐含的一个输入层,一个具有32个神经元的隐藏密集层,然后一个具有10个可能输出的输出层组成的模型吗?
model = Sequential([ Dense(32, input_shape=(784,)), Activation('relu'), Dense(10), Activation('softmax'), ])
好吧,实际上它实际上 是 一个隐式输入层,即您的模型是一个具有三层“输入,隐藏和输出”的“老式”神经网络的示例。这在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)
实际上,此隐式输入层是您input_shape只需要在顺序API的模型的第一(显式)层中包含参数的原因- 在后续层中,输入形状是根据先前的输出推断出来的(请参见的源代码中的注释core.py。
input_shape
core.py
您也可以找到有关启发性的文档tf.contrib.keras.layers.Input。
tf.contrib.keras.layers.Input