分析PyTorch Dataloader报错ValueError:num_samples的另一种可能原因

 更新时间:2024年02月09日 14:35:06   作者:阳光素描  
这篇文章主要介绍了分析PyTorch Dataloader报错ValueError:num_samples的另一种可能原因,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

先粘报错信息

Traceback (most recent call last): File “train.py”, line 169, in
train_test() File “train.py”, line 29, in train_test
dataloader_train = DataLoader(dataset_train, batch_size=batch_size, shuffle=True, pin_memory=True, drop_last=False)
File “/data3/anaconda3/lib/python3.8/site-packages/torch/utils/data/dataloader.py”,
line 270, in init
sampler = RandomSampler(dataset, generator=generator) # type: ignore[arg-type]
File “/data3/anaconda3/lib/python3.8/site-packages/torch/utils/data/sampler.py”,
line 102, in init
raise ValueError("num_samples should be a positive integer "
ValueError: num_samples should be a positive integer value, but got num_samples=0

在使用pytorch训练模型时,同样的代码在Windows下可以正常训练,但在Linux下却会出现以上报错。

网上查阅相关资料,解决办法是完全相同的

出现的问题的地方可能是如下的地方

调用DataLoder时注意参数

self.train_dataloader = DataLoader(train_dataset,
batch_size=TrainOption.train_batch_size, shuffle=TRUE,
num_workers=TrainOption.data_load_worker_num)

shuffle的参数设置错误导致,

因为已经有batch_sample了,就不需要shuffle来进行随机的sample了,所以在这里的shuffle应该设置为FALSE才对。

但我这里并未使用batch_sample,因此不是上述原因。

经查发现

由于两系统下目录地址的格式不同,

因此直接从windows移植过来的代码不能在指定目录下正常读取数据,

且代码未设置sample读取个数为0时报错,

导致dataset返回长度为0,小于batch_size,因此出现上述报错。

出现上述问题时,如未使用batch_sample,可首先检查dataset.len()是否正常。

总结

因多次出现上述问题,故记录。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • django中ImageField的使用详解

    django中ImageField的使用详解

    这篇文章主要介绍了django中ImageField的使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • Python内存管理精准释放与延迟拷贝技术探究

    Python内存管理精准释放与延迟拷贝技术探究

    这篇文章主要为大家介绍了Python内存管理精准释放与延迟拷贝技术探究,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • windows安装python超详细图文教程

    windows安装python超详细图文教程

    今天带各位小伙伴学习怎么在windows上安装python,文中有非常详细的图文介绍,对初步学习python的小伙伴们有很好地帮助,需要的朋友可以参考下
    2021-05-05
  • python导入库的具体方法

    python导入库的具体方法

    在本篇内容里小编给大家分享的是关于python如何导入库的步骤和方法,有需要的朋友们可以学习下。
    2020-06-06
  • Python Requests模拟登录实现图书馆座位自动预约

    Python Requests模拟登录实现图书馆座位自动预约

    这篇文章主要为大家详细介绍了Python Requests的模拟登录,Python实现图书馆座位自动预约,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • Python udp网络程序实现发送、接收数据功能示例

    Python udp网络程序实现发送、接收数据功能示例

    这篇文章主要介绍了Python udp网络程序实现发送、接收数据功能,结合实例形式分析了Python使用socket模块进行udp套接字创建、数据收发等相关操作技巧,需要的朋友可以参考下
    2019-12-12
  • 一起用Python做个上课点名器的制作过程

    一起用Python做个上课点名器的制作过程

    今天给大家分享一个读者粉丝投稿的,关于上课点名的实战案例,对Python上课点名器实现过程感兴趣的朋友,一起来看看是如何实现的吧
    2021-09-09
  • Python命令行解析工具argparse模块

    Python命令行解析工具argparse模块

    这篇文章主要介绍了Python命令行解析工具argparse模块,argparse模块是一个python标准库,它主要用于对用户从客户端输入的命令进行解析,这使得编写用户友好的命令行接口变得非常容易,需要的朋友可以参考下
    2023-05-05
  • python正则表达式最详解

    python正则表达式最详解

    篇文章主要介绍了Python中正则表达式的详细解释,正则表达式是Python学习进阶当中的重要内容,需要的朋友可以参考下
    2021-11-11
  • 详解Python函数作用域的LEGB顺序

    详解Python函数作用域的LEGB顺序

    这篇文章主要为大家详细介绍了Python函数作用域的LEGB顺序的相关资料,感兴趣的朋友可以参考一下
    2016-05-05

最新评论