RuntimeError: invalid argument 0: Sizes of tensors must match except in dimension 1.

pytorch训练网络模型时报错:

RuntimeError: invalid argument 0: Sizes of tensors must match except in dimension 1. Got 160 and 156 in dimension 2 at xxxxx.

上网搜索了一下,参考 https://www.cnblogs.com/zxj9487/p/11531888.html 文章所述:

“1. 你输入的图像数据的维度不完全是一样的;2. batchsize的整除问题(总数据量/batchsize)”

首先,根据1我写脚本检查了数据集的维度,全部都是512x156。

其次,总数据量是3000,batchsize我设置为2,不存在这个问题。

 

好了,但是看报错,是load数据集读入时,tensor(0,1,2,3)的维度第三维出了问题。一层层检查,print打出tensor的维度。

我这个模型里,tensor的维度是: [(batchsize, input_channel, image_height, image_width)]。

显然是卷积采样后输出后图片的高度出现问题,因为下采样后高度无法整除(156/8=20)。三通道图片(512x156)下采样(1/8)后维度变为 [( 2,3,20, 64)], 然后上采样(x8)后变为[( 2,3,160, 512)],然后和对应标签(512x156)concat时维度不一致出现错误。

所以,一旦出现这个报错,可以逐步检查tensor的维度,找到对应报错维度。

 

你可能感兴趣的:(Python,pytorch,计算机视觉CV)