当前位置: 首页 > news >正文

CNN(七):ResNeXt-50算法的思考

  •  🍨 本文为🔗365天深度学习训练营中的学习记录博客
  • 🍖 原作者:K同学啊|接辅导、项目定制

         在进行ResNeXt-50实战练习时,我也跟其他学员一样有这个疑惑,如下图所示:

         反复查看代码,仍然有些疑惑,甚至怀疑是不是代码错了。实践是检验真理的唯一标准,先把代码跑起来再说。发现运行完全没有问题,再通过对比查看网络结构和代码后,搞清楚了原因,根本原因就在stack的设计,即一个conv_shortcut=True的block+n个conv_shortcut=False的堆叠残差单元,如下图所示:

         下面以filters=128,blocks=2的入参来说明原因。

(1)1个block(conv_shortcut=True):conv_shortcut=True,结合代码可知,在进行Add操作时,是将进行了Conv+BN操作的特征图(filters=2*128),与后续[(Conv+BN+ReLU)+ 分组卷积 + (Conv+BN) ]的一系列操作后得出的特征图(filters=2*128)进行Add操作,此时Add的两部分的通道数均是2*128,即256,之后再进行ReLU操作;

(2)2个block(conv_shortcut=False):conv_shortcut=False,结合代码可知,在进行Add操作时,是直接对输入的x与后续的[(Conv+BN+ReLU)+ 分组卷积 + (Conv+BN) ]的一系列操作后得出的特征图(filters=2*128)进行Add操作。这里为什么add的其中一部分是输入x,是因为此时的输入x,是已经通过上面的1个block操作了,此时x的通道数原本就是2*128,即256。因此在进行Add操作时,与后续得出的特征图(filters=2*128)在通道数上完美匹配。

        其他filters=256、512、1024则是类似的操作。

http://www.lryc.cn/news/161856.html

相关文章:

  • 【人月神话】深入了解软件工程和项目管理
  • 52、基于函数式方式开发 Spring WebFlux 应用
  • MySQL的用户管理
  • LeetCode //C - 114. Flatten Binary Tree to Linked List
  • 利用transform和border 创造简易图标,以适应uniapp中多字体大小情况下的符号问题
  • C/C++指针函数与函数指针
  • 30天入门Python(基础篇)——第1天:为什么选择Python
  • 智慧公厕破解公共厕所管理的“孤岛现象”
  • excel中删除重复项
  • 2023-9-8 求组合数(三)
  • 01 - Apache Seatunnel 源码调试
  • UVA-12325 宝箱 题解答案代码 算法竞赛入门经典第二版
  • 烟感报警器单片机方案开发,解决方案
  • 【JavaEE】_CSS引入方式与选择器
  • 【8】shader写入类中
  • Servlet注册迭代史
  • 合创汽车V09纵享商务丝滑?预售价32万元起,正式宣布大规模生产
  • 49. 视频热度问题
  • 【力扣练习题】加一
  • Linux--I/O复用之select
  • 数据结构大作业 成绩分析c语言程序设计
  • Consul学习笔记之-初识Consul
  • python实现读取并显示图片的两种方法
  • Spring Boot 整合 MyBatis
  • 2023高教社杯数学建模A题B题C题D题E题思路模型 国赛建模思路分享
  • 手机木马远程控制复现
  • linux 安装Docker
  • Java中的值传递与引用传递 含面试题
  • SQL中CONVERT()函数用法详解
  • 借助各大模型的优点生成原创视频(真人人声)Plus