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()等方法。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。