【深度之眼】【Pytorch打卡第18天】:常见报错

这篇博客总结了PyTorch编程中常见的错误,包括数据加载错误、数据类型不匹配、模型与输入数据不兼容等问题,并给出了详细的解决建议,帮助开发者调试和优化代码。
摘要由CSDN通过智能技术生成

PyTorch中的常见报错总结

NO.1

  • 报错:ValueError: num_samples should be a positive integer value, but got num_samples=0
  • 可能的原因:传入的Dataset中的len(self.data_info)==0,即传入该dataloader的dataset里没有数据
  • 解决方法:
  1. 检查dataset中的路径,路径不对,读取不到数据
  2. 检查Dataset的__len__()函数为何输出为零
# ========================== 1 num_samples=0
flag = 0
# flag = 1
if flag:
    # train_dir = os.path.join("..", "data", "rmb_split", "train")
    train_dir = os.path.join("..", "..", "data", "rmb_split", "train")
    train_data = RMBDataset(data_dir=train_dir)

    # 构建DataLoder
    train_loader = DataLoader(dataset=train_data, batch_size=16, shuffle=True)
    

NO.2

  • 报错:TypeError: pic should be PIL Image or ndarray. Got <class 'torch.Tensor’>
  • 可能的原因:当前操作需要PIL Image或ndarray数据类型,但传入了Tensor
  • 解决方法:
  1. 检查transform中是否存在两次ToTensor()方法
  2. 检查transform中每一个操作的数据类型变化
# ========================== 2
# TypeError: pic should be PIL Image or ndarray. Got <class 'torch.Tensor'>
flag = 0
# flag = 1
if flag:
    train_transform = transforms.Compose([
        transforms.Resize((224, 224)),

        transforms.FiveCrop(200),
        transforms.Lambda(lambda crops: torch.stack([(transforms.ToTensor()(crop)) for crop in crops])),

        # transforms.ToTensor(),
        # transforms.ToTensor(),
    ])

    train_dir = os.path.join("..", "..", "data", "rmb_split", "train")
    train_data = RMBDataset(data_dir=train_dir, transform=train_transform)
    train_loader = DataLoader(dataset=train_data, batch_size=16, shuffle=True)

    data, label = next(iter(train_loader))
    

NO.3

  • 报错:RuntimeError: invalid argument 0: Sizes of tensors must match except in dimension 0.Got 93 and 89 in dimension 1 at /Users/soumith/code/builder/wheel/pytorch- src/aten/src/TH/generic/THTensorMath.cpp:3616
  • 可能的原因:dataloader的__getitem__函数中,返回的图片形状不一致,导致无法stack
  • 解决方法:
    检查__getitem__函数中的操作
# ========================== 3
# RuntimeError: invalid argument 0: Sizes of tensors must match except in dimension 0
flag = 0
# flag = 1
if flag:
    class FooDataset(Dataset):
        def __init__(self, num_data, data_dir=None, transform=None):
            self.foo = data_dir
            self.transform = transform
            self.num_data = num_data

        def __getitem__(self, item):
            size = torch<
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值