换了个数据集图片训练,结果报错:
‘Concatenate’layer requires inputs with matching shapes expect for the concat axis.Got inputs shapes:[(None,54,25,128),(None,54,24,256)]

其实就是concatenate运算出错,concatenate表示连接运算,将两个张量连接起来。
可以看到报错信息,两个张量的维度分别为:(None,54,25,128)(None,54,24,256),第一个是batch_size,最后一维卷积不同是没问题的,出问题的是第三维,后面一个张量的第三维比前一个小1,那就要看一下这个1跑到哪去了。

新的数据集图片尺寸和原来的数据集不同,图片尺寸是873*404。通过查看代码,发现是第7个卷积层的下的concatenate出的错。
用来连接的第一个张量前面有4个池化层,用来连接的第二个张量前面有5个池化层和一个上采样。

(1)看一下(None,54,25,128)是怎么来的:
由于经过一个池化层尺寸减半,且维数不能是小数,所以有:

第二维:
873/2 -> 436         池化层1
436/2 -> 218         池化层2
218/2 ->109          池化层3
109/2 -> 54          池化层4第三维:
404/2 ->202          池化层1
202/2->101           池化层2
101/2->50            池化层3
50/2->25             池化层4

(2)同样的看一下(None,54,24,256)是怎么来的:
由上采样会将图片尺寸和特征扩张一倍,所以有:

第二维:
873/2 -> 436         池化层1
436/2 -> 218         池化层2
218/2 ->109          池化层3
109/2 -> 54          池化层4
54/2 -> 27           池化层5
27*2 -> 54           上采样第三维:
404/2 -> 202          池化层1
202/2 -> 101          池化层2
101/2 -> 50           池化层3
50/2 -> 25            池化层4
25/2 -> 12            池化层5
12*2 -> 24            上采样

由此就很明了的看到问题的产生了,池化过程过滤了小数,上采样的过程也同样忽略了小数,因此导致连接的两个张量的第三维维数差了1,因此,想要形成链接,那么就要保持维度相同就行了。

我这里的问题,只要在上采样的上方的池化层就不产生小数就行了。

想了几个方法:
1、前面一个张量将多余的维度丢掉。
2、去掉或前移concatenate函数。
3、修改网络结构吧,毕竟原来的网络可能是按照原来输入的数据集设计的。
4、修改(reshape)数据集图片尺寸,使得池化层不产生小数。
尺寸具体设多少:(1)将新数据集reshape和原数据集一样大小。(2)数一下用来连接的两个张量前面的上采样前面有几个池化,那就取宽高都取2的池化层个数的指数倍,这样池化层尺寸除以2的时候就不会出现小数了。或者直接参照自己数据集的图片尺寸,找一个临近的2的指数就行,如果还是不够除,那就在这基础上再乘2,或者还是把连接函数前移或者去掉吧,图片太大不知道显卡吃不吃得消。

可能我描述的有些乱,只要自己按照每一层张量的变化拿个笔自己算一下就能找到原因了,像我的问题,只要reshape长宽为1024*512那么经历池化层的时候就不会被小数干扰了,但如果没有连接操作,就不需要考虑小数影响了。

报错:‘Concatenate’layer requires inputs with matching shapes expect for the concat axis. 解决思路相关推荐

  1. A `Concatenate` layer requires inputs with matching shapes except for the concat axis.

    先说一下我的代码出现的错误:在运行Unet代码的过程中出现了如下问题: A Concatenate layer requires inputs with matching shapes except ...

  2. ISE MAP报错: Unsupported programming for BSCAN block and JTAG_CHAIN attribute value 1的解决方法

    ISE MAP报错: Unsupported programming for BSCAN block and JTAG_CHAIN attribute value 1的解决方法 参考文章: (1)IS ...

  3. MySQL5.7报错[ERROR] Unix socket lock file is empty /tmp/mysql.sock.lock的解决方法

    MySQL5.7报错[ERROR] Unix socket lock file is empty /tmp/mysql.sock.lock的解决方法 参考文章: (1)MySQL5.7报错[ERROR ...

  4. npm install 报错(npm ERR! errno -4048,Error: EPERM: operation not permitted,)解决方法

    npm install 报错(npm ERR! errno -4048,Error: EPERM: operation not permitted,)解决方法 参考文章: (1)npm install ...

  5. 关于VS2022 C++报错 const char* 类型的实参与char *类型的形参不兼容解决办法

    关于VS2022 C++报错 const char* 类型的实参与char *类型的形参不兼容解决办法 问题来源 错误原因 解决方案 问题来源 在学习写C++代码时候,去练习课本上课后习题时候的问题, ...

  6. SVN报错之“Failed to run the WC DB work queue associated with...“的解决方法

    SVN报错之"Failed to run the WC DB work queue associated with-"的解决方法 文章目录 SVN报错之"Failed t ...

  7. Chrome升级91扩展程序报错Tabs cannot be edited right now (user may be dragging a tab)解决方法

    本文主要介绍Chrome浏览器升级91后,使用扩展程序(extension)报错时,报错:Unchecked runtime.lastError: Tabs cannot be edited righ ...

  8. Mac使用jd-gui启动报错 This program requires Java 1.8+

    Mac使用JD-GUI启动报错问题: 报错内容: ERROR launching 'JD-GUI'No suitable Java version found on your system! This ...

  9. 编译linux内核报错‘make menuconfig‘ requires the ncurses libraries

    报错 *** Unable to find the ncurses libraries or the*** required header files.*** 'make menuconfig' re ...

最新文章

  1. .NET设计模式(4):建造者模式(Builder Pattern)(转)
  2. jsp:include和%@include%的区别
  3. QML基础类型之quaternion
  4. c语言判断字符串是不是回文_LeetCode 热题 HOT 100 5. 最长回文子串
  5. java ab与ab的区别 a|b与a||b的区别 break、continue、return
  6. 【数据结构和算法笔记】:树的概念和性质总结
  7. .NET 2.0 的压缩功能
  8. 使用nmake编译Gdal源代码(Win10, VS2022)
  9. 算法 思维导图(一)
  10. Android通话录音
  11. python 处理xml
  12. 如何在阿里云建立网站
  13. c语言round函数作用,if条件函数怎样和round一起用?!,C++中round函数怎么用
  14. java-IO流-将文件夹以树形结构打印(打印文件夹目录)问题
  15. 10 本 Linux PDF 书籍免费分享
  16. 虚数到底有什么意义?从 i 说起
  17. “钱三篇”后续之利息-钱的时间价值!
  18. Java怎么屏蔽骂人的词_表示嫌弃一个人的词语-高级的含蓄的骂人的话-形容很反感一个人成语...
  19. 对于感情的一点小感悟
  20. Linux Mysql8.x安装

热门文章

  1. 距离度量 —— 切比雪夫距离(Chebyshev Distance)
  2. PhpSpreadsheet 实现Excel多sheet导出
  3. [附源码]计算机毕业设计Python新能源汽车租赁(程序+源码+LW文档)
  4. Typora 设置代码块的默认编程语言以及字体颜色设置
  5. 极路由1S升级系统之后再刷机学习记录
  6. 在Ubuntu上编译gptfdisk的方法
  7. JDE(Towards Real-Time Multi-Object Tracking)代码训练——小白必看
  8. app inventor+tinywebDB远程控制掌控板
  9. 锅炉软化水不合格是怎么回事?该如何解决?
  10. lisp不是函授型语言_LISP语言