pytorch:将 FloatTensors 的元组转换为 numpy 数组

pytorch: Convert a tuple of FloatTensors into a numpy array

我刚得到一个带有 MNIST 数据的 torchvision.datasets 对象

train_dataset= dsets.MNIST(root='./data',train=True,transform=transforms.ToTensor(),download=True)

我想将这个元组转换成一组形状为 60000x28x28 和标签为 60000 的 numpy 数组

我知道提供数据的形式可以直接应用于 pytorch 神经元以用作训练数据,但我想将此数据转换为 numpy 数组。

我做的第一件事是用 zip(*train_dataset)

划分 (data,labels) 的元组
data,labels = zip(*train_dataset)

labels 很容易转换成一个 numpy 数组,但是我无法按照我想要的方式将 "data" 转换成一个 numpy 数组。当我尝试将所有数据转换为 numpy.array 之类的

data[:].numpy()

我收到一条错误消息,告诉我 'tuple' 对象没有属性 'numpy'。如果我将此数据 [:] 转换为 numpy,则只有第一个维度(60000 数据)被转换为 numpy.array,但其余部分仍保留为张量。

我可以使用循环转换所有数据(实际上我做到了)并且它有效,但是它真的很慢。有没有人做过这样的转换?

谢谢。

也许这样的东西对你有用:

train_dataset.train_data.numpy()  #contains (60000, 28, 28) numpy array
train_dataset.train_labels.numpy() # contains labels

数据中好像有两个张量。您需要检查变量数据是否只包含一个张量,那么命令 tensor.numpy() 应该可以正常工作。