ValueError:使用火炬张量时无法解包的值太多

埃米尔

对于神经网络项目,我正在使用Pytorch并正在使用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:

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,但这也不是您想要的。

您可以torch.utils.data.TensorDataset轻松地创建数据集,就像MNIST数据集一样,该数据集生成图像元组及其各自的标签。

train_dataset = torch.utils.data.TensorDataset(torch.from_numpy(X_train), torch.from_numpy(y_train))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

ValueError:解析txt时无法解包的值太多

在for循环中使用str.split时出现“ ValueError值太多,无法解包”

使用 django_filters 时,/plants/plants/ 处的 ValueError 值太多无法解包(预期为 2)

训练分类器时出现“太多值无法解包” ValueError

定义OrderedDict时出错-ValueError:太多值无法解包

Python ValueError:太多值无法解包

python ValueError:太多值无法解包(预期...。)

OpenCV python:ValueError:太多值无法解包

Python 2.7.1 ValueError:解包的值太多

ValueError:从字典传递值时解包的值太多(预期为 2)

ValueError:太多值无法解包-是否可以忽略一个值?

ValueError:太多的值无法在url配置中解包(预期为3)

为什么在运行此程序时出现“ ValueError:太多的值无法解包”?

ValueError:太多值无法解包,读取文本文件时出错

ValueError:尝试同时迭代两个列表时,解包的值太多(预期为 2)

错误:ValueError:太多值无法解包(预期3)

OpenCV Python Numpy:ValueError:太多值无法解包(预期2)

Django-ValueError:太多值无法解包(预期2)

带有nltk的FreqDist:ValueError:太多值无法解包

ValueError:太多值无法解包-OpenCV Python HoughLines

Python-ValueError:太多值无法解包-为什么?

scikits.bvp_solver生成ValueError:太多值无法解包

Pandas DataFrame apply()ValueError:太多值无法解包(预期2)

MapReduce:ValueError:太多值无法解包(预期2)

ValueError:太多值无法解包Tkinter列表框

ValueError:太多值无法解包:python列表操作

Python ValueError:太多值无法用字典解包

Tensorflow ValueError:太多信息无法解包(预期2)

Sklearn管道引发ValueError:太多值无法解包(预期2)