扁平化输入层形状
Flattened input layer shape
下面的代码取自 Coursera deeplearning.ai 课程中的 TensorFlow in Practice(计算机视觉示例 - 第 2 周)。
import tensorflow as tf
mnist = tf.keras.datasets.fashion_mnist
(training_images, training_labels), (test_images, test_labels) = mnist.load_data()
training_images = training_images / 255.0
test_images = test_images / 255.0
model = tf.keras.models.Sequential([tf.keras.layers.Flatten(),
tf.keras.layers.Dense(128, activation=tf.nn.relu),
tf.keras.layers.Dense(10, activation=tf.nn.softmax)])
model.compile(optimizer=tf.optimizers.Adam(),
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
print("Executing Training:")
model.fit(training_images, training_labels, epochs=5)
print("Executing inference:")
model.evaluate(test_images, test_labels)
问题:TensorFlow如何推断输入层的形状?哪个形状在这里被压平?输入形状应该来自输入数据的形状,我在这里遗漏了什么吗?
给定 model.fit(training_images, training_labels),Tensorflow API 自动将 training_images 传递到第一层。
Training_images 是形状为 (m, 28, 28, 1) 的张量。
在哪里,
m - 训练图像总数,
28x28 - 图像尺寸,
1 - 通道(灰度),
tf.keras.layers.Flatten(), 将(28, 28, 1) 28x28 图像重塑为 -> (784,).
查看此 Flatten() 方法源代码。 https://github.com/tensorflow/tensorflow/blob/v2.2.0/tensorflow/python/keras/layers/core.py#L598-L684
下面的代码取自 Coursera deeplearning.ai 课程中的 TensorFlow in Practice(计算机视觉示例 - 第 2 周)。
import tensorflow as tf
mnist = tf.keras.datasets.fashion_mnist
(training_images, training_labels), (test_images, test_labels) = mnist.load_data()
training_images = training_images / 255.0
test_images = test_images / 255.0
model = tf.keras.models.Sequential([tf.keras.layers.Flatten(),
tf.keras.layers.Dense(128, activation=tf.nn.relu),
tf.keras.layers.Dense(10, activation=tf.nn.softmax)])
model.compile(optimizer=tf.optimizers.Adam(),
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
print("Executing Training:")
model.fit(training_images, training_labels, epochs=5)
print("Executing inference:")
model.evaluate(test_images, test_labels)
问题:TensorFlow如何推断输入层的形状?哪个形状在这里被压平?输入形状应该来自输入数据的形状,我在这里遗漏了什么吗?
给定 model.fit(training_images, training_labels),Tensorflow API 自动将 training_images 传递到第一层。
Training_images 是形状为 (m, 28, 28, 1) 的张量。 在哪里, m - 训练图像总数, 28x28 - 图像尺寸, 1 - 通道(灰度),
tf.keras.layers.Flatten(), 将(28, 28, 1) 28x28 图像重塑为 -> (784,).
查看此 Flatten() 方法源代码。 https://github.com/tensorflow/tensorflow/blob/v2.2.0/tensorflow/python/keras/layers/core.py#L598-L684