首页 > 其他 > 详细

Pytorch 训练过程中出现的问题

时间:2022-05-27 20:58:35      阅读:11      评论:0      收藏:0      [点我收藏+]

each element in list of batch should be of equal size

  File "/home/vase/software/miniconda3/envs/d2l/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py", line 83, in <listcomp>
    return [default_collate(samples) for samples in transposed]
  File "/home/vase/software/miniconda3/envs/d2l/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py", line 81, in default_collate
    raise RuntimeError(‘each element in list of batch should be of equal size‘)
RuntimeError: each element in list of batch should be of equal size

代码中这部分表示自定义DataLoader的时候再__getitem__() 的时候输出的list长度不一致,

这里如果是bbox本来就输出多个不同数量的结果可以尝试自己自定义collate() 这个方法

源代码

collate是输入一个batch,之后对batch进行处理,这要保证batch中的元素都是相同长度的(list的长度)

如果不同的话就需要自己进行处理

我的问题是__getitem__() 输出的是map 而不是list,这样对默认的collate就无法识别了,

有两种简单的解决方法

  1. getitem()return前将自己的map包裹成list
def __getitem__(self,i):
    sample = dict()
    # 一堆代码 处理sample这个map
    return list(sample)
  1. 再DataLoader处添加简单的collate_fn逐个输出map内容
        data_loader = DataLoader(
            datasets, 
            batch_size = dataset_cfg.batch_size, 
            collate_fn=lambda x:x,
        )

来源:https://github.com/pytorch/pytorch/issues/42654

Pytorch 训练过程中出现的问题

原文:https://www.cnblogs.com/vase/p/15354331.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!