NumPy:无法使用. reform()添加维度

vfh0ocws  于 2023-06-23  发布在  其他
关注(0)|答案(3)|浏览(81)

作为我设置的Conv2D任务的一部分,我有一个训练集,它是shape(60000,28,28),它分别由训练图像的数量,x轴和y轴维度组成。在我正在进行的项目中,我被要求添加一个额外的维度,该维度将导致形状为(60000,28,28,1)。结果,一个图像也应该返回形状(28,28,1)。
我试过images = training_images.reshape(60000, 28, 28, 1),但这似乎只返回形状为(60000,28,28),并没有返回额外的维度。

tcbh2hod

tcbh2hod1#

您可以使用expand_dims在任何数组轴中添加大小为1的维度。

import numpy as np

a = np.zeros((400, 28, 28))
b = np.expand_dims(a, axis=-1)
b.shape

> (400, 28, 28, 1)

或者,如果你需要一个更短的方式(例如在表达式中使用)

a = np.zeros((400, 28, 28))
a[..., np.newaxis].shape

> (400, 28, 28, 1)

其中...表示数组的每个维度(就像写a[:, :, :, np.newaxis]一样)。
如果您需要使用整形:

a = np.zeros((400, 28, 28))
a.reshape(*a.shape, 1).shape

> (400, 28, 28, 1)

*a.shape解包shape元组,并将每个元素作为reshape函数的参数传递(就像编写a.reshape(400, 28, 28, 1)一样)

xvw2m8pv

xvw2m8pv2#

你必须这样做:

images = np.expand_dims(images, axis=-1)
z9ju0rcb

z9ju0rcb3#

也可以使用np.newaxis

images = images[:, :, :, np.newaxis]

images = images[..., np.newaxis]

相关问题