针对“RuntimeError: each element in list of batch should be of equal size” 问题解决

Python89

第一次运行代码出现了这个问题:
针对“RuntimeError: each element in list of batch should be of equal size” 问题解决
这个问题的出现主要来源于DataLoader类中的collate.py文件造成的问题,由于每个batch里的长度不一致,因此导致出现了该问题。
通过百度方法和查看源码去解决该问题,总结下来
他的解决方法目前来说有三种( 如果你有更好的方法,欢迎在评论区留言,我们一起学习):

解决方案1:

将代码中报错地方的batch_size的值改成1,即可解决,这也是最简单的解决办法,但是这种解决办法并没有真正从根源上进行解决。他只是没有进行批处理,转化为一条提的单独处理方案。
原始代码如果为: data_loader = DataLoader(dataset,batch_size=2,shuffle=True)
我们可以改成
data_loader = DataLoader(dataset,batch_size=1,shuffle=True)

解决方案2

这个问题出现的原因我们还可以发现是我们在读取数据集的过程中每个数据的长度不一,这个时候我们就可以将读取数据的阶段进行裁剪,例如设置读取到数据的每个长度为100(可以自行设置),即在def__gettiem__中进行裁剪,或者是直接在__init__阶段读取数据的时候就进行裁剪也可以。

虽然这种解决方案可以从根本上解决这一问题,但由于舍弃或添加了一些单词或功能,很容易导致不理想的结果。

[En]

Although this solution can fundamentally solve this problem, but due to abandoning or adding some words or features, it is easy to lead to unsatisfactory results.

解决方案3
输入验证码查看隐藏内容

扫描二维码关注本站微信公众号 Johngo学长
或者在微信里搜索 Johngo学长
回复 svip 获取验证码
wechat Johngo学长