Pytorch 学习(二十五)---高级DataLoader技巧----每次返回的Tensor的size可以任意

默认的PyTorch DataLoader返回的Tensor尺寸固定,但有时我们需要处理尺寸变化的数据。文中讨论了如何避免对数据进行不必要的padding,提出了在DataLoader中使用自定义collate函数来实现每次返回Tensor的size可变,以适应不同大小的通道数需求。
摘要由CSDN通过智能技术生成

总说

大家都知道,默认的DataLoader每次返回的Tensor的尺寸都是固定的,因为batchsize>1时,默认需要stack一下,比如__getitem__()返回的图片return img,其中img是 CHW, 你在外面拿到就是 N*C*H*W了。因为,默认return torch.stack(batch, 0, out=out)了一下。如果每次img图片不一样,就会出错。

有些人会说,我直接设置一个数据集最大的HW呗,这样我们不管图片多大,全部pad成那么大,然后记录一下每张图片的hw,再返回return padded_img, h, w。再在外面进行相应的处理。

但是有些情况,就是有时候每次返回的tensor通道很大,上千上万的吧,有时候通道就很小。类似这样的情况,即每次返回的tensor的size相差很大!这时候,你肯定不愿意直接pad成最大的吧。我们希望,当拿到batch所有数据后,不是默认的直接stack,而是自己处理一些size不匹配的tensor

我们希望可以这样写:

class TrainDataset
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值