TensorFlow中ValueError报错求助:CNN运行出现负维度尺寸问题
CNN负维度报错原因分析
这个错误完全由模型参数设置导致,和输入数据本身无关。
报错核心逻辑
从报错信息能明确:
- 当前输入特征图的宽/高尺寸为
2x2(对应输入shape[?,2,2,394]) - 你使用了
3x3的卷积核,且卷积层设置为padding="VALID"(无填充模式)
在VALID padding规则下,卷积输出尺寸的计算公式为:输出尺寸 = 输入尺寸 - 卷积核尺寸 + 1
代入数值后得到 2-3+1=0,直接出现无效的零维度,触发报错。
解决办法
- 调整卷积核尺寸:将
3x3卷积核改为2x2或1x1,匹配当前输入尺寸 - 修改padding模式:把
padding="VALID"替换为padding="SAME",框架会自动填充边缘,保证输出尺寸和输入一致 - 前置调整特征图尺寸:在进入该卷积层前,通过池化(缩小)或上采样(放大)操作,把输入宽高调整到≥3的尺寸
内容的提问来源于stack exchange,提问作者Tenks
相关产品推荐
相关产品推荐

