让 AI 检查转置卷积:长度恢复了,为什么原来的数值没有回来
图像生成与解码器里常用转置卷积扩大特征尺寸,因此容易把它理解为卷积的撤销操作。尺寸回到原来,只说明形状对上了。转置卷积对应的是线性算子的转置,也叫伴随;要验证它,内积关系比“能否还原输入”更合适。
AI生成的概念示意图:信号可以回到较长的表示,数值关系仍可能改变;方块并非正文精确维度或真实网络结构。
把最小卷积写成一张矩阵
取一维输入x=(1,2,3),卷积核为(1,2),单输入输出通道,步幅1,无填充、无偏置、膨胀率1,不加激活。按照深度学习接口的互相关约定,输出第一项为x₁+2x₂,第二项为x₂+2x₃。
因此y=(5,8),矩阵C有两行:(1,2,0)与(0,1,2)。普通前向运算就是Cx,把长度3变成长度2。现在转置C,得到三行:(1,0)、(2,1)、(0,2),它把长度2的向量映回长度3。
转置乘回去,不会抵消原来的作用
把原输出y=(5,8)送入C转置,得到(5,18,16):第一项5,第二项2×5+8=18,第三项2×8=16。长度确实恢复为3,但显然不是最初的(1,2,3)。这里算的是C转置乘C,并没有理由要求它等于单位矩阵。
还可以找出丢失信息的证据。向量d=(4,-2,1)经过C后是(0,0),所以x+d=(5,0,4)与x会产生同一个y=(5,8)。如果两个不同输入已经无法从输出区分,任何只看这个输出的固定操作,都不可能同时准确恢复两者。
伴随关系可以用一个标量等式验收
另取探针v=(4,-1)。一边先算Cx=(5,8),再与v点乘,得到5×4+8×(-1)=12。另一边先算C转置乘v=(4,7,-2),再与x点乘,得到1×4+2×7+3×(-2)=12。
这就是内积恒等式:〈Cx,v〉=〈x,C转置v〉。它对尺寸匹配的所有x、v都成立。若代码中通道顺序、核方向、步幅或填充不对应,测试就可能失败;比要求还原输入更能检查“转置”是否实现正确。
独立本地程序分别使用矩阵乘法与逐位置散加计算转置:v第一项按核贡献到前两格,v第二项贡献到后两格,重叠的中间格相加。两条路线都得到(4,7,-2),并验证零空间反例与上述内积相等。
放回网络时,权重与非线性要分开
可以要求AI:“固定核与全部卷积参数,写出线性矩阵,算一次转置;用随机或指定探针验内积,不以重建相等作为通过条件;另找一个非零向量被映成零。”小尺寸下把矩阵完整写出,最容易发现看似只有一格的对齐错误。
PyTorch文档也指出该层不是卷积的真正逆运算。训练中的解码器通常还有独立可学习权重;如果权重与编码器根本不同,就更不能把整个模块当作编码器矩阵的转置。偏置和激活应暂时关闭后再做本文的线性核对。
输出补位解决的是尺寸歧义
当步幅大于1时,不同输入长度可能产生同一个输出长度。output_padding用于选择输出形状,不能补回已经消失的数值信息。本文步幅为1、输出补位为0,刻意把形状歧义拿开,单独展示转置与逆的差别。
需要图像重建时,模型可以依靠学习到的先验生成合理细节,但这不等于证明细节就是输入原貌。验收应将算子实现、输出尺寸、重建误差与生成质量分别记录。只看到图像放大成功,尚不足以判断模型保留了哪些信息,更不能据此承诺无损恢复。验收时还应明确输入输出的轴顺序,并保存核的完整数值,方便另一人逐格复算。
资料核对日期:2026年10月2日。数据为原创教学设定,已用独立本地程序复核,未进行真实模型训练或生产效果测试。


