- 🍨 本文为 🔗365天深度学习训练营中的学习记录博客
- 🍖 原作者: K同学啊
需要解决的疑问:代码是否有误?对错与否给出思考。
打卡要求:请查找相关资料、逐步推理模型、详细写下思考过程
问题:如果conv_shortcut=False,那么执行"x=Add()..."语句时,通道数不一致,为什么不会报错
因为在ResNext50整个模型中,在定义残差单元的时候,将conv_shortcut=False,表示使用identity_shortcut而不是Conv2D层作为快捷链接。
对于定义残差单元block模块,Add()是x和shortcut的加和,x通道数是filters*2.
对于shortcut、conv_shortcut=True则是filters*2,filters*2,否则是原始输入通道数。
对于堆叠残块模块stack模块,第二次调用block,conv_shortcut=False,使用identity_shortcut,这种情况,快捷连接将直接传递输入x给块的最后一层,因此,在执行"x=Add()",快捷连接通道数与该层不一致,但Add()在通道数不同时,会自动对快捷连接进行零填充,所以不会出现不匹配的错误。