无激活函数的两个连续卷积层堆叠是否具有实际设计意义?
无激活连续非对称卷积的有效性说明
你提出的「无激活的连续线性卷积等价于单次卷积」的结论在纯线性变换的数学逻辑上成立,但当前代码设计并非错误,这种非对称卷积拆分在实际应用中有明确的实用价值,具体原因如下:
计算量优化的收益不受激活层影响
你的拆分设计中卷积层的输入输出通道数是动态调整的,而非固定通道数变换,我们可以通过简单计算验证收益(设filters_multiplier为K,输入特征图尺寸为H*W):
若直接用单个3×3卷积实现1通道输入、6K通道输出的变换,计算量为H*W * 1 * 6K * 3*3 = 54HKW;
拆分为3×1+1×3卷积后的总计算量为H*W*1*K*3*1 + H*W*K*6K*1*3 = 21HKW,仅为原始方案的39%,哪怕两层之间没有激活层,计算量降低的收益依然成立。训练推理分离的工程优化设计
这是目前轻量CV模型的常用设计思路:训练阶段保留拆分的两个卷积,既可以降低训练过程的计算开销,拆分操作带来的隐式正则效果还能小幅提升模型泛化能力;推理部署阶段可以直接将两个无激活的连续卷积融合为等效的3×3卷积,不会产生任何额外的推理延迟,兼顾了训练效率和推理性能。可排查隐式操作的存在
你可以进一步检查代码中卷积层后是否省略了批归一化(BN)层:如果卷积后跟随了BN层,哪怕没有后续激活函数,BN的归一化操作也会在训练过程中为模型引入正则增益,提升收敛效果和泛化能力。
内容的提问来源于stack exchange,提问作者Anvar Ganiev
相关产品推荐
相关产品推荐

