输入为1×1×256时,Keras中1×1Conv2d与Dense层输出是否等价?
1x1卷积与全连接层在1x1特征输入下的等价性解答
结论:在对应参数完全一致的前提下,两种计算流程得到的输出完全相等
核心逻辑说明
当输入特征的高、宽均为1时,1x1卷积和全连接层的计算逻辑完全等价:
- 对于case1的第一层
Conv2D(f=32, k=(1,1), s=1):每个输出通道对应一个尺寸为(1,1,256)的卷积核,和1x1x256的输入做乘加计算得到1个标量,32个输出通道最终得到形状为1x1x32的特征。该计算和case2中把输入展平为256维向量后,过32神经元的全连接层得到32维向量的计算完全一致:卷积核的权重对应全连接层神经元的权重向量,两者的偏置参数也一一对应。 - 中间的ReLU层是逐元素计算,不管输入是1x1x32的4D张量还是32维的1D向量,计算结果没有差异。
- 第二层的
Conv2D(f=256, k=(1,1), s=1)和第二层全连接层的等价逻辑和第一层完全一致,最终把全连接的输出reshape回1x1x256后,和卷积的输出数值完全相同。
实际使用注意事项
如果你直接初始化两个结构跑出来的输出不一样,是因为Keras默认的参数初始化是随机的,只要手动把两个结构的对应参数赋值为相同值,输出就会完全匹配。
类SE-Net模块的适配说明
你在开发注意力模块时,两种写法是可以无缝替换的,现有开源实现中两种写法都比较常见,不会对最终效果和性能产生影响。
内容的提问来源于stack exchange,提问作者EJ Song
相关产品推荐
相关产品推荐

