U-Net处理256x256 nifti-1文件时Concatenate层形状不匹配报错求解
错误根因
你的收缩路径第5层池化操作的输入张量填错了,现有代码中计算完c5后,p5的输入错误传入了上一层的c4,而不是当前层的c5:
# 错误代码行 p5 = tf.keras.layers.MaxPooling2D(pool_size=(2, 2))(c4)
维度验证(256×256输入场景)
- 按正常U-Net收缩逻辑,
c4输出尺寸为32×32,p4池化后输出16×16,c5在p4基础上计算,输出尺寸为16×16 - 你错误将
c4传入p5池化,得到的p5尺寸为16×16,后续c6输出尺寸为16×16,上采样得到的u7尺寸为32×32 - 此时
u7(32×32)和c5(16×16)尺寸不匹配,拼接时触发报错
修复方案
将p5的输入改为c5即可:
p5 = tf.keras.layers.MaxPooling2D(pool_size=(2, 2))(c5)
修改后p5输出尺寸为8×8,c6输出8×8,上采样后的u7尺寸为16×16,和c5的16×16完全匹配,拼接逻辑可正常运行。之前128×128尺寸下未报错属于维度巧合,本质还是代码逻辑错误。
内容的提问来源于stack exchange,提问作者risheendra
相关产品推荐
相关产品推荐

