【小白日记】用Pytorch测试模型时,产生错误:
ValueError: Expected more than 1 value per channel when training, got input size torch.Size([1, 512, 1, 1])
根据提示,发现当输入张量为(b, d, 1, 1)时,也就是最后H,W为 1x1时,进行nn.BatchNorm2d()【每个Batch的每个通道的张量进行批量归一化处理】时会报错,这是由于nn.BatchNorm2d()的批量需要大于一个值,而这时张量每个Batch的每个通道只有一个值,因此产生错误了!因此,如果训练时BatchSize=1会产生一样的问题。
上面 torch.randn(1, 3, 112, 112) 改为 torch.randn(2, 3, 112, 112) 即可。
或在删除 a = net(dummy_input) 即可。
但是在用thop的profile查看网络的参数量与浮点运算数时,不会产生如上错误!