365打卡第J7周:对于ResNeXt-50算法的思考

🏡 我的环境:

语言环境:Python3.10

编译器:Jupyter Lab

深度学习环境:torch==2.5.1 torchvision==0.20.1

------------------------------分割线---------------------------------

该代码定义了一个残差单元,包含以下部分:

  1. 捷径连接(shortcut)处理
  2. 主路径的三层卷积层结构
  3. 分组卷积的实现
  4. 最终的残差连接和激活

这部分代码在功能上没有问题,但有一个需要注意的点:

主路径的最后一层卷积输出通道数是filters * 2,这与捷径分支的通道数保持一致(当conv_shortcut=True时)。这是正确的设计,保证了两个分支可以相加。

分析一下潜在的通道数和尺寸匹配问题:

  1. conv_shortcut=True时:

    • shortcut分支:输出通道数为filters * 2
    • 主路径:最终输出通道数也为filters * 2
    • 尺寸变化:shortcut使用strides参数调整尺寸
  2. conv_shortcut=False时:

    • shortcut直接使用输入x
    • 则直接将输入张量 x 作为快捷连接。
    • 在这种情况下,即使通道数不一致也不会报错的可能原因如下:此时,shortcut 的维度不同于 x 的维度。但是,由于 Add 层具有广播机制,因此会自动对两个输入进行广播,以使它们的维度相同。这是因为 Add 层会在计算中使用广播机制,这使得在执行相加操作之前,较小张量的形状会被扩展以匹配较大张量的形状。具体来说,如果 shortcut 的形状是 (h, w, c1),x 的形状是 (h, w, c2),其中 c1 不等于 c2,则 shortcut 会被自动扩展为 (h, w, c2),使得 x 和 shortcut 的形状相同。因此,即使通道数不一致,也可以进行相加操作。
相关推荐
赵英英俊1 小时前
Python day15
开发语言·python
zxsd_xyz1 小时前
基于LabVIEW与Python混合编程的变声器设计与实现
开发语言·python·labview
Danceful_YJ2 小时前
15.手动实现BatchNorm(BN)
人工智能·深度学习·神经网络·batchnorm
地平线开发者2 小时前
理想汽车智驾方案介绍专题 1 端到端+VLM 方案介绍
算法·自动驾驶
地平线开发者2 小时前
征程 6 | UCP 任务优先级/抢占简介与实操
算法·自动驾驶
杰克尼2 小时前
912. 排序数组
算法
李昊哲小课3 小时前
K近邻算法的分类与回归应用场景
python·机器学习·分类·数据挖掘·回归·近邻算法·sklearn
jndingxin3 小时前
OpenCV直线段检测算法类cv::line_descriptor::LSDDetector
人工智能·opencv·算法
胖达不服输3 小时前
「日拱一码」027 深度学习库——PyTorch Geometric(PyG)
人工智能·pytorch·深度学习·pyg·深度学习库
deephub3 小时前
贝叶斯状态空间神经网络:融合概率推理和状态空间实现高精度预测和可解释性
人工智能·深度学习·神经网络·贝叶斯概率·状态空间