You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Keras与Tensorflow的transpose conv2d转置卷积输出形状存在差异?

Keras与TensorFlow转置卷积输出形状不同的原因

两类接口输出形状不同的核心原因是层级定位和设计逻辑的差异:

  • tf.nn.conv2d_transpose是TensorFlow的底层操作接口,开放了输出形状的自定义权限
  • tf.keras.layers.Conv2DTranspose是高层封装接口,默认采用固定规则自动推导输出形状

转置卷积的合法输出范围

转置卷积是正向卷积的逆运算,对于你给出的参数(输入尺寸2,卷积核3,步长2,padding=VALID),正向卷积有两种输入尺寸都能得到输出尺寸2:

  • 正向输入尺寸为5时:(5 - 3)/2 + 1 = 2(整除无余数)
  • 正向输入尺寸为6时:floor((6 -3)/2) +1 = 2(除完余1,取整后仍满足)
    因此对应的转置卷积就有5×5和6×6两种合法输出尺寸。

两个接口的具体逻辑

  • tf.nn.conv2d_transpose:只要你传入的output_shape属于合法范围,接口就会按照你指定的尺寸调整隐含填充,输出对应大小的结果,所以你传[1,5,5,1]就输出5×5,传[1,6,6,1]就输出6×6。
  • tf.keras.layers.Conv2DTranspose:内部固定使用无余数的最小合法输出推导规则,公式为:输出尺寸 = (输入尺寸 -1) * 步长 + 卷积核尺寸,代入参数计算得到(2-1)*2 +3 =5,所以默认输出5×5的结果。如果你需要得到6×6的输出,手动添加output_padding=1参数即可,这个参数就是用来处理有余数场景的填充调整。

内容的提问来源于stack exchange,提问作者TeeTracker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 18:57:03