Pytorch: ‘Image’ object is not iterable ‘xxx‘ object is not iterable

本文记录了在Pytorch中遇到'Image' object is not iterable错误的解决过程。错误主要由数据不正确迭代或转换引起,特别是None值的输入。解决方案包括检查getitem和transform中的None值,确保数据可以转化为list、tuple、string或Tensor等类型。文中还提到了在特定文件中搜索'not iterable'以定位问题,并分享了一种通过调整to_tensor调用位置而解决问题的神奇方法。
摘要由CSDN通过智能技术生成

解决了一个bug,记录一下

先上结论:pytorch有时候dataloader写不好,报错'xxx object is not iterable',首先检查getitem还有getitem调用的transform里有没有哪一步输入了None,尤其是这个数据在函数里定义成了其他类型,但是调用函数的时候因为不需要这个数据的计算于是输入了None。如果一个函数的输入可能是None,要添加判断,对舍弃None对应的数据的情况单独处理。

Pytorch里报错not iterable的情况主要有:1数据的长度不可获取,2数据不能转换成list、tuple、string、Tensor及其派生类型中的任意一种。

这些报错None全部符合,是第一优先待排查的bug。

如果用了dictionary不用担心,pytorch里有针对dict的处理。

不过遇到这种情况,也有除了排除None输入之外的解决方法。昨天神奇地通过调整to_tensor调用的位置,跑通了,现在还不知道为啥……

 

直接去github上pytorch项目里搜“not iterable”(记得加引号,才不会被拆开搜索),只有两个文件里有对应的报错提示信息,第一个文件里有1处,第二个文件里有2处

第一个文件是https://github.com/pytorch/pytorch/blob/99093277c0972535d6ecea2ec4eed98c14895f48/torch/csrc/jit/frontend/sugared_

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值