将 Numpy 中的张量从 2D 重塑为 3D

Reshaping tensor in Numpy from 2D to 3D

我正在使用 EMNIST 数据集并具有以下变量 X_train:

import scipy .io
emnist = scipy.io.loadmat(DIRECTORY + '/emnist-letters.mat')
data = emnist ['dataset']
X_train = data ['train'][0, 0]['images'][0, 0]

X_train的形状是(124800, 784)。

现在,我想重塑此数据集,使其成为形状为 (124800, 28, 28) 的 3D 张量。

我可以按如下方式重塑数据的一个实例:

X_train[index].reshape((28,28))

但是,下面的循环不起作用:

for i in range(len(X_train)):
    X_train[i] = X_train[i].reshape((28,28))

我该怎么做才能重塑我的数据集,使其成为 (124800, 28, 28) 的形状?

您可以像这样重塑整个数组:

X_train = X_train.reshape((-1,28,28), order='F')

Matlab 使用列优先顺序(参见 here),因此您需要将顺序指定为 order='F' 以获得正确的方向。请参阅以下第一个字母 (w) 的示例: