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

时间:2017-11-06 22:17:15

标签: python arrays numpy pytorch tensor

我刚收到一个带有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 = zip(*train_dataset)

标签很容易转换为numpy数组,但是我无法按照我想要的方式将“数据”转换为numpy数组。当我尝试将所有数据转换为像

这样的numpy.array时
data[:].numpy()

我收到一个错误告诉我'元组'对象没有属性'numpy'。如果我将这个数据[:]转换为numpy,只需将第一个维度(60000数据)转换为numpy.array,但其余的仍为Tensors。

我可以使用循环转换所有数据(实际上我做了它)并且它可以工作,但它确实很慢。以前有人做过这样的转换吗?

感谢。

2 个答案:

答案 0 :(得分:0)

也许这样的事情对你有用:

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

答案 1 :(得分:0)

似乎数据中存在两个张量。您需要检查变量数据是否只包含一个张量,然后命令tensor.numpy()应该可以正常工作。