将MNIST数据集从(60000,28,28)调整为(60000,14,14)
将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. 我想知道是否有其他方法可以在不添加新轴的情况下进行调整工作。
问题出现的原因是因为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)。
当然,你也可以使用其他库来调整图像的大小,但个人建议避免不必要的依赖,以保持代码的简洁性。