项目场景:

跑U-net网络的时候,有一步是torch.cat()操作,出现
下面是代码

class UNet(nn.Module):def __init__(self, in_channels, out_channels):super(UNet, self).__init__()self.conv1 = DoubleConv(in_channels, 32)self.pool1 = nn.MaxPool2d(2)self.conv2 = DoubleConv(32, 64)self.pool2 = nn.MaxPool2d(2)self.conv3 = DoubleConv(64, 128)self.pool3 = nn.MaxPool2d(2)self.conv4 = DoubleConv(128, 256)self.pool4 = nn.MaxPool2d(2)self.conv5 = DoubleConv(256, 512)self.up6 = nn.ConvTranspose2d(512, 256, 2, stride=2)self.conv6 = DoubleConv(512, 256)self.up7 = nn.ConvTranspose2d(256, 128, 2, stride=2)self.conv7 = DoubleConv(256, 128)self.up8 = nn.ConvTranspose2d(128, 64, 2, stride=2)self.conv8 = DoubleConv(128, 64)self.up9 = nn.ConvTranspose2d(64, 32, 2, stride=2)self.conv9 = DoubleConv(64, 32)self.conv10 = nn.Conv2d(32, out_channels, 1)def forward(self, x):#print(x.shape)c1 = self.conv1(x)p1 = self.pool1(c1)#print(p1.shape)c2 = self.conv2(p1)p2 = self.pool2(c2)#print(p2.shape)c3 = self.conv3(p2)p3 = self.pool3(c3)#print(p3.shape)c4 = self.conv4(p3)p4 = self.pool4(c4)#print(p4.shape)c5 = self.conv5(p4)up_6 = self.up6(c5)merge6 = torch.cat([up_6, c4], dim=1)c6 = self.conv6(merge6)up_7 = self.up7(c6)#print(up_7.shape,c3.shape)merge7 = torch.cat([up_7, c3], dim=1)c7 = self.conv7(merge7)up_8 = self.up8(c7)merge8 = torch.cat([up_8, c2], dim=1)c8 = self.conv8(merge8)up_9 = self.up9(c8)merge9 = torch.cat([up_9, c1], dim=1)c9 = self.conv9(merge9)c10 = self.conv10(c9)out = nn.Sigmoid()(c10)return out

问题描述

本来是在跑彩色图像的去噪任务,想尝试一些灰度图像的去噪。刚开始只是修改了img_channel,将3改为1,想当然的将crop_img_size改为了灰度图像数据集的统一尺寸,没有考虑pool(2)操作后和上采样后的对齐问题。
比如5/2=2
但是2*2=4
这时候,4和5就对不上了。


原因分析:

torch.cat()函数的功能是将多个tensor类型矩阵的连接。它有两个参数,第一个是tensor元组或者tensor列表;第二个是dim,如果tensor是二维的,dim=0指在行上连接,dim=1指在列上连接。

注意:torch.cat 进行连接的tensor的shape,除了需要连接的维度上的shape值可不同,必须拥有相同的shape,a是(2,3),b是(2,20)即torch.cat((a,b),-1)可以进行连接;torch.cat((a,b),0)不可以进行连接,因为3和20值不同

那么问题找到了,就是维度没有对上
为什么没有对上呢?先开始跑彩色图像的时候crop_img_size是256,稳稳的在2的幂结果上,怎么除2都不会有余数,再乘回去也没有误差。
但是我改成了180后,180/2/2=45,45/2=22,这时候22上采样完是44,44与45不齐了,问题产生。


解决方案:

尺寸crop_img_size改为2的幂结果,比如128,这应该也是为什么我们看到的大部分输入的size都是256、512等等这些数的原因,为了能整除,没有余数。

Sizes of tensors must match except in dimension 1. Expected size 44 but got size 45 for tensor numbe相关推荐

  1. 记录解决RuntimeError: Sizes of tensors must match except in dimension 1. Expected size 27 but got size

    问题描述 在做目标检测服务过程中,将yolov7模型通过flask打包成预测服务API,此次训练的图像输入大小是1280,输入预测图片是如果图像大于1280则预测成功,小于1280则报RuntimeE ...

  2. Sizes of tensors must match except in dimension 1. Expected size 24 but got size 25 for tensor numbe

    在做图像分割的时候遇到了错误,错误如下: File "D:/segmentation/Pytorch-UNet-master/train.py", line 193, in < ...

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

    invalid argument 0: Sizes of tensors must match except in dimension 0. Got 1 原因:dataloader 需要的数据维度是一 ...

  4. RuntimeError: Sizes of tensors must match except in dimension 1. Got 61 and 60 in dimension 2

    1. 背景介绍 在训练语义分割模型时,出现以下错误: RuntimeError: Sizes of tensors must match except in dimension 1. Got 61 a ...

  5. RuntimeError: Sizes of tensors must match except in dimension 2. Got 5 and 4

    调试代码的时候,遇到***RuntimeError: Sizes of tensors must match except in dimension 2. Got 5 and 4*** 这个问题, 解 ...

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

    最近在修改模型不支持的算子后,由于对模型的效果产生了影响,所以需要进行微调训练,但是训练的时候报错了,如下: File "/home/xxxxxxx/EdgeNets/nn_layers/e ...

  7. pytorch dataload 出错:: invalid argument 0: Sizes of tensors must match except in dimension 0

    错误信息:"RuntimeError: invalid argument 0: Sizes of tensors must match except in dimension 0. Got ...

  8. Pytorch_Geometric(PyG)使用DataLoader报错RuntimeError: Sizes of tensors must match except in dimension 0.

    使用Pytorch_Geometric(PyG)时构建DataLoader,从DataLoader获取样本Batch时报错:RuntimeError: Sizes of tensors must ma ...

  9. RuntimeError: invalid argument 0: Sizes of tensors must match except in dimension 0—问题分析

    声明: 这里仅仅提供一个思路,暂时没有绝对正确通用的解决方案 作者:{ 墨理 } 感谢通过私信.评论交流,协力探讨解决问题的同学 UP .Penser 文章目录 探讨的 pytorch 报错信息如下 ...

最新文章

  1. 为什么只有三次挥手_TCP为什么是三次握手,为什么不是两次或四次,TCP四次挥手...
  2. 计算机代码内大数据内存堆栈溢出问题
  3. 邀请 | 关于微软容器服务,你需要知道的二三事
  4. rhel5.4下编译安装python2..6.6 + mod_python
  5. 纯英文换行的css,利用CSS实现纯英文数字自动换行
  6. 为什么我们程序员难晋升
  7. Python入门--方法重写
  8. js获取数组中的最大值和最小值的方法汇总
  9. 处理 Archlinux 报错
  10. 远程登录不上服务器,服务器远程登录不上怎么办
  11. findfont: Font family [‘sans-serif‘] not found解决方法
  12. Android编译时冲突报错的完美解决方案
  13. 蜀门207服务端GM命令大全
  14. VOLTE-QOS服务质量
  15. PhotoSweeper X for Mac(重复照片快速清理软件)
  16. STVP ST Visual Programmer 下载程序出错
  17. TC397 LIN Master 用例
  18. 腾讯企业邮箱 java_使用腾讯企业邮箱调用SpringMail或者JavaMail发送邮件的发送服务器设置...
  19. 吴雪筠校友报告会--转行—机遇、挑战与得失
  20. 三星N900刷机包 港版4.4.2精简 官方原汁原味 卡刷包

热门文章

  1. android乐视电视投影,乐视电视有几种投屏方式?这样做让手机会员立马变大屏...
  2. STM32Cube-按键检测
  3. CSS 自定义多选框样式
  4. php版本:实现过滤掉广告、色情、政治相关的敏感词
  5. matlab-最小二乘法拟合
  6. VC检测U盘的插入与拔出
  7. js/jq防止页面跳转的实现方式
  8. 基于51单片机的八路多路温度测控系统proteus仿真原理图PCB
  9. Pocsuite3渗透测试框架编写POC和EXP脚本
  10. 消息中间件RabbitMQ核心1