pytorch 报错整理
一、ValueError
1、ValueError: Expected more than 1 value per channel when training, got input size torch.Size([1,512,1,1])

错误原因:
模型中用了
batchnomolization,训练中用 batch 训练的时候当前 batch 恰好只含一个 sample,而由于 BatchNorm 操作需要多于一个数据计算平均值,因此造成该错误。
解决方法:
在
torch.utils.data.DataLoader类中或自己创建的继承于DataLoader的类中设置参数drop_last=True,把不够一个 batch_size 的数据丢弃。
train_loader = data.DataLoader(train_dst, batch_size=opts.batch_size,
shuffle=True, num_workers=2, drop_last=True)
当使用BatchNorm进行训练时,如果batch中只有一个样本,会导致ValueError。解决方法是在DataLoader中设置`drop_last=True`,以丢弃不足一个batch_size的样本。
1706





