Python 3.x ValueError:使用torch张量时,值太多,无法解压缩

Python 3.x ValueError:使用torch张量时,值太多,无法解压缩,python-3.x,numpy,for-loop,pytorch,enumerate,Python 3.x,Numpy,For Loop,Pytorch,Enumerate,对于一个关于神经网络的项目,我正在使用Pytork,并且正在使用EMNIST数据集 已在数据集中加载的代码: train_dataset = dsets.MNIST(root='./data', train=True, transform=transforms.ToTensor(), download=True) 并准备:

对于一个关于神经网络的项目,我正在使用Pytork,并且正在使用EMNIST数据集

已在数据集中加载的代码:

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

train_loader = torch.utils.data.DataLoader(dataset=train_dataset, 
                                           batch_size=batch_size, 
                                           shuffle=True)
然后,当定义了网络的所有配置时,有一个for循环来训练每个历元的模型:

 for i, (images, labels) in enumerate(train_loader):
在示例代码中,这很好

对于我的任务,我得到一个数据集,我加载如下:

emnist = scipy.io.loadmat("DIRECTORY/emnist-letters.mat")

data = emnist ['dataset']
X_train = data ['train'][0, 0]['images'][0, 0]
y_train = data ['train'][0, 0]['labels'][0, 0]
train_dataset = np.concatenate((X_train, y_train), axis = 1)
train_dataset = torch.from_numpy(train_dataset)
然后,我创建train_数据集,如下所示:

emnist = scipy.io.loadmat("DIRECTORY/emnist-letters.mat")

data = emnist ['dataset']
X_train = data ['train'][0, 0]['images'][0, 0]
y_train = data ['train'][0, 0]['labels'][0, 0]
train_dataset = np.concatenate((X_train, y_train), axis = 1)
train_dataset = torch.from_numpy(train_dataset)
并使用相同的步骤进行准备:

train_loader = torch.utils.data.DataLoader(dataset=train_dataset, 
                                           batch_size=batch_size, 
                                           shuffle=True)
但是,当我尝试使用与以前相同的循环时:

for i, (images, labels) in enumerate(train_loader):
我得到以下错误:

ValueError: too many values to unpack (expected 2)

谁知道我能做些什么才能用这个循环训练我的数据集呢?

从EMNIST数据创建的数据集是一个张量,因此,数据加载器也会产生一个张量,其中第一个维度是批处理维度。这会导致尝试在批处理维度上解压张量,这不起作用,因为批处理大小大于2,但也不是您希望发生的事情

您可以使用轻松地创建一个数据集,该数据集生成图像及其各自标签的元组,就像MNIST数据集一样

train\u dataset=torch.utils.data.TensorDataset(torch.from\u numpy(X\u train),torch.from\u numpy(y\u train))