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

第一次运行代码出现了这个问题:

针对“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__阶段读取数据的时候就进行裁剪也可以。

这种解决方案的虽然可以从根本上解决这个问题,但是由于舍弃或者是添加了一部分的词或者是特征,容易导致最终结果效果不理想。

解决方案3

这个解决方案的灵感来源于Dataset和DataLoader类的介绍 大家可以进行相应的查看。他针对这部分的讲解非常的详细,这里进行相应的借用并进行介绍。
在DataLoader里,除了上面提到的shuffle参数和batch_size参数以外,还有一个非常重要的传入参数collate_fn,这个参数传入的是一个函数,这个函数主要是对每个batch进行处理,最终输出一个batch的返回值,换句话说collate_fn函数的返回值,就是遍历DataLoader的时候每个”batch”的返回值了(类似于上面例子中的二维tensor)。下面我写一个函数,让大家看看到底是怎么处理的。

def mycollate(item):

def mycollate(item):
    sample1, sample2 = item
    return {'第一个样本':sample1,'第二个样本':sample2}

from torch.utils.data import DataLoader
myDataloader = DataLoader(dataset, shuffle=True, batch_size=2, collate_fn=mycollate)

我们现在再来打印一下myDataloader的每个元素。

for batch in myDataloader:
    print(batch)
    print('==========================L()=====')

结果展示:

{'第一个样本': tensor([ 11,  16,   7,   3,   9, 100, 100, 100, 100, 100, 100, 100]), '第二个样本': tensor([  7,  16,  11, 100, 100, 100, 100, 100, 100, 100, 100, 100])}
===============================
{'第一个样本': tensor([ 3,  9, 12,  2, 17,  1, 13,  6, 10, 18,  9,  0]), '第二个样本': tensor([  4,   5,  15,  14,   8, 100, 100, 100, 100, 100, 100, 100])}

Original: https://www.cnblogs.com/danieldaren/p/16594630.html
Author: 高冷的程序员大大
Title: 针对“RuntimeError: each element in list of batch should be of equal size” 问题解决

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/591556/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • python数据可视化-matplotlib入门(6)-从文件中加载数据

    前几篇都是手动录入或随机函数产生的数据。实际有许多类型的文件,以及许多方法,用它们从文件中提取数据来图形化。 比如之前python基础(12)介绍打开文件的方式,可直接读取文件中的…

    Python 2023年11月3日
    035
  • 《ASP.NET Core技术内幕与项目实战》精简集-基础组件1.3:配置

    本节内容,涉及3.2(P60-P69),7.2(P188-P193),NuGet包 Microsoft.Extensions.Configuration Microsoft.Ext…

    Python 2023年10月17日
    051
  • 数据分析工具pandas

    一、pandas的数据结构分析 Pandas 中有两个主要的数据结构:Series 和DataFrame 。 Series 是一维的数据结构,DataFrame是二维的、表格型的数…

    Python 2023年8月7日
    055
  • 使用Matplotlib库可视化COCO数据集格式常用函数 (一)

    目录 前言 理论知识 在单个子图上显示、保存图片 在多个子图上显示图片 在图片上绘制检测框 多子图显示图片,设置窗口的属性(名称,坐标范围) 前言 经常使用COCO格式数据集的同学…

    Python 2023年9月4日
    058
  • 第三方平台使用钉钉账号登录

    思路 1.成为钉钉开放平台开发者 想要通过钉钉账号实现第三方登录,首先要成为钉钉开放平台开发者,从而获取 APPID和 appSecret 2.前端点击钉钉登录按钮发送登录请求到后…

    Python 2023年8月9日
    056
  • 【老师见打系列】:我只是写了一个自动回复讨论的脚本~

    文章目录 🌟好久不见 ⛳️实现过程 * 🌴老操作了兄弟们~ 🐢一步拿捏讨论 – 💖美图 结束语 专栏Python零基础入门篇 💥 Python网络蜘蛛 💥 Python…

    Python 2023年8月6日
    078
  • python:numpy查询定位赋值数值所在行列

    文章目录 * – + 根据条件筛选行(筛选) + * 筛选矩阵中第7列值为5的行 * 筛选矩阵中第7列大于5的行 + 根据行列号取值(查询) + * 取第2行第2列的数…

    Python 2023年8月25日
    044
  • 【python】都2022年不会还有人不会在电脑桌面上养宠物吧~

    Original: https://www.cnblogs.com/Qqun261823976/p/16860074.htmlAuthor: python倩Title: 【pyth…

    Python 2023年10月30日
    039
  • 树莓派配置Python虚拟环境、安装PyQt5、安装PySide2

    抵扣说明: 1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。 Original: https://blo…

    Python 2023年11月6日
    056
  • 纸牌博弈问题

    纸牌博弈问题 作者:Grey 原文地址: 博客园:纸牌博弈问题 CSDN:纸牌博弈问题 题目描述 有一个整型数组 A,代表数值不同的纸牌排成一条线。玩家 a 和玩家 b 依次拿走每…

    Python 2023年10月16日
    029
  • Python + Flask ORM实现增删改查

    1. 背景介绍 SQLAlchemy 以 ORM 为核心基础提供可选对象关系映射能力。 (1). ORM 提供一个附加的配置层,允许用户自定义的 Python 类进行对象关系映射,…

    Python 2023年5月25日
    079
  • 计算机网络子网划分

    一、默认子网掩码 # A类网络的默认子网掩码为255.0.0.0B类网络的默认子网掩码为255.255.0.0C类网络的默认子网掩码为255.255.255.0 二、CIDR # …

    Python 2023年6月12日
    086
  • Pandas库学习

    一、Pandas是什么 Pandas 是 Python 语言的一个扩展程序库,用于数据分析。Pandas 一个强大的分析结构化数据的工具集,基础是 Numpy(提供高性能的矩阵运算…

    Python 2023年8月18日
    062
  • Linux_日志

    1.日志的介绍 1.日志文件是重要的系统信息文件 ,其中记录了许多重要的系统事件,包括用户的登录信息、系统的 启动信息、系统的安全信息、邮件相关信息、各种服务相关信息等。2.日志对…

    Python 2023年10月24日
    043
  • 基于Pytorch实现的声音分类

    前言 本项目是基于Pytorch的声音分类项目,旨在实现对各种环境声音、动物叫声和语种的识别。项目提供了多种声音分类模型,如EcapaTdnn、PANNS、ResNetSE、CAM…

    Python 2023年9月27日
    050
  • Linux常用命令——sort命令

    sort 将文件进行排序并输出 补充说明 sort命令是在Linux里非常有用,它将文件进行排序,并将排序结果标准输出。sort命令既可以从特定的文件,也可以从stdin中获取输入…

    Python 2023年11月8日
    043
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球