我刚收到一个带有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。
我可以使用循环转换所有数据(实际上我做了它)并且它可以工作,但它确实很慢。以前有人做过这样的转换吗?
感谢。
答案 0 :(得分:0)
也许这样的事情对你有用:
train_dataset.train_data.numpy() #contains (60000, 28, 28) numpy array
train_dataset.train_labels.numpy() # contains labels
答案 1 :(得分:0)
似乎数据中存在两个张量。您需要检查变量数据是否只包含一个张量,然后命令tensor.numpy()应该可以正常工作。