我正在关注 Tensorflow 初学者教程:
我们来到第一行代码:
构建机器学习模型
构建 tf.keras.Sequential 模型:
model = tf.keras.models.Sequential([ tf.keras.layers.Flatten(input_shape=(28, 28)), tf.keras.layers.Dense(128, activation='relu'), tf.keras.layers.Dropout(0.2), tf.keras.layers.Dense(10) ])
我对第一行感到困惑:
tf.keras.layers.Flatten(input_shape=(28, 28))
具体来说就是input_shape
论点。
为什么:因为我认为该Flatten
操作采用前一层并将其转换为一维向量;那么这个input_shape
论证是什么意思呢?
所以我们查阅文档
文档Flatten()
: https: //www.tensorflow.org/api_docs/python/tf/keras/layers/Flatten
说:
压平输入。不影响批量大小。
具体来说,我对这个input_shape
论点感兴趣:
参数
data_format
一个字符串,channels_last
(默认)或 之一channels_first
。输入中维度的顺序。Channels_last 对应于形状 (batch, ..., channels
) 的输入,而 Channels_first 对应于形状 (batch, channels, ...
) 的输入。如果未指定,则使用image_data_format
Keras 配置文件中~/.keras/keras.json
(如果存在)“channels_last”处找到的值。默认为“channels_last”。
没有名为 的参数input_shape
。
那么这个论证的意义是什么?
简洁版本
- 如果我从文档中编写 TF 代码,我怎么知道它
Flatten
需要一个input_shape
参数? - 为什么
input_shape
文档中省略了该参数?
换句话说:文档假定您具备一些有关 TensorFlow 的基本知识,但文档本身并未对此进行说明。
有人可以帮助我理解这种无证行为,以及为什么它没有记录?
研究工作
除了查阅文档之外,我们还有:
- Keras 输入解释:input_shape、units、batch_size、dim 等(不是我的问题,也不是回答我的问题)
input_shape
是一个可选参数,可以添加到Flatten
Keras 模型的第一层(或不添加)。Keras 使用它的值隐式创建一个InputLayer
。您的模型相当于:
引用文档: