前言:对于我遇到的问题而言:“ValueError: Caught ValueError in DataLoader worker process 0”只是表象,“ too many values to unpack (expected 9)”才是内核
1、ValueError: Caught ValueError in DataLoader worker process 0
对于第一种类型,搜索查看的其他博客都说是因为
(1)之前拷贝数据集的时候中断过,数据出了问题
(2)检查数据集拷贝是否完整,检查后发现数据特征拷贝由于进程中断,数据包大小比完整的小,故报错需重新拷贝完整数据
然后我照着从出现问题的代码语句出发往上回溯,找DataLoader
语句,找到了对应的文件,但发现它们都能正常读取,还能获取他们的形状,如下图所示:
2、 too many values to unpack (expected 9)
对于第二种类型,有个博客说是setuptools包的版本太高导致的,降低版本后问题成功解决。
但是我觉得我遇到的情况应该不一样吧,没有去尝试
3、解决办法
还是抓住第二点的问题,寻找Python报错too many values to unpack
的解决办法,然后找到了一篇讲代码问题的,如下,:
类似将一个包含3个keydict中间变量赋值给了一个2个元素list
#错误代码
tmp_d={'a':2, 'b':3, 'c':4 }
var_a, var_b = tmp_b
#需要注意的是,以下代码是正确的
tmp_d={'a':2, 'b' :3}
var_a, var_b = tmp_d
我的代码问题是一个数据变量包含10个变量,代码的对应语句只赋值给了9个变量,因此报错!
附上链接: too many values to unpack (expected 9)
4、总结
改bug虽然需要多尝试别人不同的解决办法,但是也要注意
1、你对自己代码报错的原因(可能是猜的)越了解,建议边搜边查边猜,这样你在搜索的时候就越有针对性
2、你对正在调试运行的代码也要有一定的了解,啥也不懂的话,碰到代码逻辑语法相关的也很难解决