《CVPR2025-DEIM创新改进项目实战:从原理到部署的深度学习优化全攻略》005、DEIM模型架构总览——编码器-解码器与动态门控设计

《CVPR2025-DEIM创新改进项目实战:从原理到部署的深度学习优化全攻略》005、DEIM模型架构总览——编码器-解码器与动态门控设计 CVPR2025-DEIM创新改进项目实战:DEIM模型架构总览——编码器-解码器与动态门控设计从一次诡异的梯度爆炸说起去年冬天调DEIM的早期原型,模型在训练到第47个epoch时突然loss飙到NaN。检查了三天,最后发现是门控模块的sigmoid输出在极端情况下饱和,导致梯度回传时门控信号完全消失——编码器输出的特征被“静默”了,解码器直接对着空气做预测。这个坑让我意识到,DEIM的架构设计远不止是“把编码器-解码器拼起来加个门控”那么简单。今天这篇笔记,我会从实际调试中踩过的坑出发,把DEIM的编码器-解码器骨架和动态门控机制拆开揉碎。不画图,全靠文字描述,你最好边读边在脑子里构建结构。编码器:不是简单的特征提取器DEIM的编码器沿用了Transformer的堆叠结构,但有两处关键改动。第一,它把标准LayerNorm换成了可学习的通道级缩放+偏置,原因很简单:门控模块对特征分布的敏感性极高,固定归一化参数会导致门控信号在训练初期震荡。第二,编码器每个Block末尾增加了一个残差门控旁路——这不是常规的残差连接,而是一个可学习的标量权重,控制当前Block输出对后续特征的贡献比例。实际写代码时,这个残差门控旁路容易写成:# 别这样写!直接乘标量会导致梯度消失x