分析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()是否正常。

总结

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

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

相关文章

  • python中Class(类)的超详细说明

    python中Class(类)的超详细说明

    这篇文章主要介绍了python中Class(类)的相关资料,Class类定义了具有相同属性和方法的对象集合,对象是类的实例,类变量在整个实例化的对象中是公用的,而实例变量是每个对象独有的,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-11-11
  • python实现对服务器脚本敏感信息的加密解密功能

    python实现对服务器脚本敏感信息的加密解密功能

    这篇文章主要介绍了python实现对服务器脚本敏感信息的加密解密功能,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • python opencv 直方图反向投影的方法

    python opencv 直方图反向投影的方法

    这篇文章主要介绍了python opencv 直方图反向投影的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-02-02
  • Python中__init__.py文件的作用

    Python中__init__.py文件的作用

    这篇文章主要介绍了Python中__init__.py文件的作用,在PyCharm中,带有__init__.py这个文件的目录被认为是Python的包目录,与普通目录的图标有不一样的显示
    2022-09-09
  • Python实现byte转integer

    Python实现byte转integer

    这篇文章主要介绍了Python实现byte转integer操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • numpy中生成随机数的几种常用函数(小结)

    numpy中生成随机数的几种常用函数(小结)

    这篇文章主要介绍了numpy中生成随机数的几种常用函数,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • 详细介绍Ruby中的正则表达式

    详细介绍Ruby中的正则表达式

    这篇文章主要介绍了详细介绍Ruby中的正则表达式,文章中还给出了用于搜索和替换的正则表达式的使用实例,需要的朋友可以参考下
    2015-04-04
  • Python实现从Markdown到PDF的转换的方法

    Python实现从Markdown到PDF的转换的方法

    Markdown,以其简洁的语法和易于阅读的特性,成为了许多作家、开发者和学生记录思想、编写教程或撰写报告的首选格式,然而,在分享或打印这些文档时,Markdown的纯文本形式可能无法满足对版式和布局的专业需求,本文将介绍如何用Python代码轻松实现从Markdown到PDF的转换
    2024-07-07
  • pytorch 数据处理:定义自己的数据集合实例

    pytorch 数据处理:定义自己的数据集合实例

    今天小编就为大家分享一篇pytorch 数据处理:定义自己的数据集合实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • Python实现爬取并分析电商评论

    Python实现爬取并分析电商评论

    这篇文章主要介绍了Python实现爬取并分析电商评论,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06

最新评论