将MNIST数据集从(60000,28,28)调整为(60000,14,14)

13 浏览
0 Comments

将MNIST数据集从(60000,28,28)调整为(60000,14,14)

我找到了将MNIST训练数据集从(60000, 28, 28)调整为(60000, 14, 14)的方法。\n这是代码和结果:\n

import tensorflow as tf
import numpy as np
(x_train, y_train), (x_test, y_test) = tf.keras.datasets.mnist.load_data()
x_train, x_test = x_train[..., np.newaxis], x_test[..., np.newaxis]
x_train_small = tf.image.resize(x_train, (14,14)).numpy()
x_test_small = tf.image.resize(x_test, (14,14)).numpy()
print(x_train.shape)
print(x_test.shape)
print(x_train_small.shape)
print(x_test_small.shape)

\n输出结果为:\n

(60000, 28, 28, 1)
(10000, 28, 28, 1)
(60000, 14, 14, 1)
(10000, 14, 14, 1)

\n1. 我对为什么要添加一个新的轴来改变我想要的形状感到困惑。\n2. 我想知道是否有其他方法可以在不添加新轴的情况下进行调整工作。

0
0 Comments

问题出现的原因是因为TensorFlow的resize函数需要输入一个4维的张量作为图像输入,而MNIST数据集的图像是一个3维的张量。解决这个问题的方法是将MNIST数据集的图像维度从(60000, 28, 28)调整为(60000, 28, 28, 1)。

在TensorFlow的文档中,resize函数的第一个参数是images,可以是一个4维的张量,也可以是一个3维的张量。第二个参数是size,是一个包含两个元素的1维int32张量,表示图像的新高度和宽度。

由于MNIST图像是灰度图像,所以它们只有一个通道。因此,在调用resize函数时,需要将MNIST图像的维度调整为(60000, 28, 28, 1)。

当然,你也可以使用其他库来调整图像的大小,但个人建议避免不必要的依赖,以保持代码的简洁性。

0