【问题标题】:Flattened input layer shape扁平化输入层形状
【发布时间】:2020-07-26 14:42:20
【问题描述】:

以下代码取自 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如何推断输入层的形状?哪个形状在这里被展平?输入的形状应该是从输入数据的形状推导出来的,我这里漏了什么吗?

【问题讨论】:

    标签: tensorflow deep-learning flatten


    【解决方案1】:

    给定 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-03
      • 2018-02-27
      • 2017-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-20
      相关资源
      最近更新 更多