本文为🔗365天深度学习训练营中的学习记录博客
🍖 原作者:K同学啊 | 接辅导、项目定制
🚀 文章来源:K同学的学习圈子深度学习第J6周:ResNeXt-50实战解析K同学的学习圈子
在 ResNeXt 网络中,如果残差单元块的定义中 conv_shortcut=False,那么执行 x = Add()([x, shortcut]) 这个语句时,即使通道数不一致也不会报错,原因如下:
在这种情况下,shortcut 的维度与 x 不同。但是,Add 层在执行计算时会使用广播机制,自动调整两个输入的维度,使它们匹配。这意味着在进行加法操作之前,较小张量(shortcut)的形状会被扩展以匹配较大张量(x)的形状。
具体来说,如果 shortcut 的形状是 (h, w, c1),而 x 的形状是 (h, w, c2),其中 c1 不等于 c2,那么 shortcut 将被自动扩展为 (h, w, c2),从而与 x 的形状相匹配。因此,即使通道数不一致,也能顺利执行加法操作。
总之,Add 层具备自动广播机制,在计算时能够自动调整较小张量的形状以匹配较大张量的形状,因此即使通道数不一致,也不会引发错误。