基于TensorFlow Keras API教程;
model = keras.Sequential([ keras.layers.Dense(10, activation='softmax', input_shape=(32,)), keras.layers.Dense(10, activation='softmax')])
我不明白为什么输入层的单元数量是10,而输入形状是32。TensorFlow教程中也有许多类似的例子。
回答:
这种困惑在新手实践者中相当普遍,且并非没有理由:答案,正如评论中已经暗示的那样,在Keras Sequential API中存在一个隐式的输入层,由第一个显式层的input_shape
参数决定。
这在Keras Functional API中直接可见(查看文档中的示例),其中Input
本身就是一个显式层,你的模型将被编写为:
inputs = Input(shape=(32,)) # 输入层x = Dense(10, activation='softmax')(inputs) # 隐藏层outputs = Dense(10, activation='softmax')(x) # 输出层model = Model(inputs, outputs)
即,尽管在Keras Sequential API中看起来像是两层网络,但你的模型实际上是一个具有三层(输入、隐藏和输出)的“老式”神经网络的例子。
(顺便说一句,与问题无关,使用softmax
作为隐藏层的激活函数意义不大。)