报错:‘Concatenate’layer requires inputs with matching shapes expect for the concat axis. 解决思路
换了个数据集图片训练,结果报错:
‘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. 解决思路相关推荐
- A `Concatenate` layer requires inputs with matching shapes except for the concat axis.
先说一下我的代码出现的错误:在运行Unet代码的过程中出现了如下问题: A Concatenate layer requires inputs with matching shapes except ...
- 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 ...
- 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 ...
- 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 ...
- 关于VS2022 C++报错 const char* 类型的实参与char *类型的形参不兼容解决办法
关于VS2022 C++报错 const char* 类型的实参与char *类型的形参不兼容解决办法 问题来源 错误原因 解决方案 问题来源 在学习写C++代码时候,去练习课本上课后习题时候的问题, ...
- 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 ...
- 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 ...
- 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 ...
- 编译linux内核报错‘make menuconfig‘ requires the ncurses libraries
报错 *** Unable to find the ncurses libraries or the*** required header files.*** 'make menuconfig' re ...
最新文章
- .NET设计模式(4):建造者模式(Builder Pattern)(转)
- jsp:include和%@include%的区别
- QML基础类型之quaternion
- c语言判断字符串是不是回文_LeetCode 热题 HOT 100 5. 最长回文子串
- java ab与ab的区别 a|b与a||b的区别 break、continue、return
- 【数据结构和算法笔记】:树的概念和性质总结
- .NET 2.0 的压缩功能
- 使用nmake编译Gdal源代码(Win10, VS2022)
- 算法 思维导图(一)
- Android通话录音
- python 处理xml
- 如何在阿里云建立网站
- c语言round函数作用,if条件函数怎样和round一起用?!,C++中round函数怎么用
- java-IO流-将文件夹以树形结构打印(打印文件夹目录)问题
- 10 本 Linux PDF 书籍免费分享
- 虚数到底有什么意义?从 i 说起
- “钱三篇”后续之利息-钱的时间价值!
- Java怎么屏蔽骂人的词_表示嫌弃一个人的词语-高级的含蓄的骂人的话-形容很反感一个人成语...
- 对于感情的一点小感悟
- Linux Mysql8.x安装
热门文章
- 距离度量 —— 切比雪夫距离(Chebyshev Distance)
- PhpSpreadsheet 实现Excel多sheet导出
- [附源码]计算机毕业设计Python新能源汽车租赁(程序+源码+LW文档)
- Typora 设置代码块的默认编程语言以及字体颜色设置
- 极路由1S升级系统之后再刷机学习记录
- 在Ubuntu上编译gptfdisk的方法
- JDE(Towards Real-Time Multi-Object Tracking)代码训练——小白必看
- app inventor+tinywebDB远程控制掌控板
- 锅炉软化水不合格是怎么回事?该如何解决?
- lisp不是函授型语言_LISP语言