python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > pytorch ValueError: num_samples should be a positive integer value, but got num_samples=0

pytorch报错问题:ValueError: num_samples should be a positive integer value, but got num_samples=0

作者:甜筒酱

这篇文章主要介绍了pytorch报错问题:ValueError: num_samples should be a positive integer value, but got num_samples=0的解决方案,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

pytorch报错问题

代码调试时,显示

ValueError: num_samples should be a positive integer value, but got num_samples=0

因为我用的数据集是已经划分好的,所以不需要再shuffle。

加载数据时将shuffle = False,错误即可消除。

Pytorch报错及解决记录

1. ValueError: num_samples should be a positive integer value, but got num_samples=0

情况描述:

一般出现在DataLoader(dataset=train_data, …)行。

可能原因:

传入的dataset没有数据,这时的 train_data.__len__() == 0,可能是函数找不到数据文件,数据路径不对。

解决方法:

检查自定义的 XXDataset() 类,关于获取数据的部分,查看路径等是否正确。

2. RuntimeError: stack expects each tensor to be equal size, but got [1077, 3] at entry 0 and [887, 3] at entry 1

情况描述:

出现这个报错时,一般输入的数据每个样本的大小不相同。

可能原因:

没有对数据进行transforms.Resize()处理,或处理不当,与网络不匹配。

解决方法:

根据网络输入,对数据进行transforms.Resize()处理。

3. TypeError: pic should be PIL Image or ndarray. Got <class ‘torch.Tensor’>

情况描述:

出现这个报错时,一般可能是读取图片数据时的格式不对,或所处理的数据不是图片。

可能原因:

pic 数据类型应该是 PIL Image 或 ndarray,但却是 torch.Tensor。

解决方法:

检查自定义的 XXDataset() 类,特别是 __getitem__() 方法,从读取数据到返回,注意以下问题:

是否有多次对数据向tensor类型转换,包括 torch.from_numpy()、transforms.ToTensor()等方法。

总结

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

您可能感兴趣的文章:
阅读全文