完整问题描述
在将自己制作的数据集输入到模型中出现如下报错:
ValueError: Expected more than 1 value per channel when training, got input size torch.Size([1, 512, 1, 1])
问题分析
模型中用了batchnomolization,训练中用batch训练的时候当前batch恰好只含一个sample,而由于BatchNorm操作需要多于一个数据计算平均值,因此造成该错误。
解决方案
由于我自己也没有设置batchsize,所以并没有网上提供的那种含有DataLoader的类,看了不少经验帖之后,发现有种方法能够很好的解决,就是在训练模型前加入:
model.eval()
如图所示:
然后就可以解决该问题了,完美!!!