深度学习模型tensor维度对不上是一个非常常见且有时比较难排查的现象。之所以难排查是因为报错信息和真实的错误原因之间的联系往往并不紧密,很难仅仅从PyTorch给出的数字上的信息判断错误在何处。
笔者在一个训练好的模型上测试单个样本时出现了这个问题,一度排查了图片读取、图片通道数等问题,最后发现原因在于forward部分的代码是针对batch编写的,所以输入的格式是四维的BxCxHxW,而测试单个样本时输入是三维的,所以只需要一行img=img.unsqueeze(0)就解决了这个浪费了一上午 + 一下午的问题。。。