神经网络之计算图repeat节点

🌀 一、什么是 repeat 节点?

✅ 定义:

Repeat 节点 是指同一个变量/张量在计算图中被重复用作多个操作的输入,这些操作彼此独立运行,但都依赖这个变量的值。

换句话说,同一个值,被多次引用,每次引用都在构建不同的路径。


🎯 二、举个具体例子

考虑如下函数:

L=x⋅x+sin⁡(x) L = x \cdot x + \sin(x) L=x⋅x+sin(x)

分析:

  • (x⋅x)( x \cdot x )(x⋅x):使用了 ( x ) 两次
  • (sin⁡(x))( \sin(x) )(sin(x)):又使用了一次
  • 所以,( x ) 被重复使用了三次 → 它在计算图中就是一个 repeat 节点

🧠 三、repeat 节点 vs 分支节点

特性 repeat 节点 分支节点
含义 同一个变量重复用作输入 某个中间值的输出被多个操作引用
强调点 变量的引用次数 数据流的分叉
本质区别 在编程上是多次读取 在图结构上是输出分支
反向传播 所有使用路径的梯度都要合并 同上,使用 梯度累加

实际上,两者在梯度传播逻辑上是一样的。


🔁 四、反向传播中的作用

关键点:

  • 当一个变量被重复使用,它对最终损失 ( L ) 的梯度应当是所有使用路径的梯度之和

继续看上面的例子:

L=x2+sin⁡(x) L = x^2 + \sin(x) L=x2+sin(x)


步骤1:前向传播

  • (a=x⋅x)( a = x \cdot x )(a=x⋅x)
  • ( b = \\sin(x) )
  • (L=a+b)( L = a + b )(L=a+b)

步骤2:反向传播

我们想求(dLdx)( \frac{dL}{dx} )(dxdL)

dLdx=dadx+dbdx=2x+cos⁡(x) \frac{dL}{dx} = \frac{da}{dx} + \frac{db}{dx} = 2x + \cos(x) dxdL=dxda+dxdb=2x+cos(x)

这里 ( x ) 就是 repeat 节点:

  • 在 (x⋅x)( x \cdot x )(x⋅x) 中使用一次 → 导数是 ( 2x )
  • 在 (sin⁡(x))( \sin(x) )(sin(x)) 中使用一次 → 导数是 (cos⁡(x))( \cos(x) )(cos(x))
  • 最终对 ( x ) 的梯度是这两者之和

🧮 五、计算图结构图示

复制代码
     x
   / | \
x*x  |  sin(x)
  \  |   /
     + 
     |
     L

节点 x 被重复读取三次,它是一个 repeat 节点。


🧩 六、repeat 节点在编程中的体现

自动微分框架(如 PyTorch、TensorFlow)中:

  • 变量(如 x)被重复使用时,框架自动在后台构建一个"共享节点"
  • 在反向传播时,每条路径上计算出的梯度会自动累加
  • 用户不需要手动处理 repeat 节点,框架会合并所有路径上传回的梯度

PyTorch 示例代码

python 复制代码
import torch

x = torch.tensor(2.0, requires_grad=True)

# repeat: x 被用在两个地方
y = x * x + torch.sin(x)

y.backward()

print(x.grad)  # 输出 2x + cos(x) = 4 + cos(2)

✅ 输出:

复制代码
tensor(4.5839)

🧠 七、为什么理解 repeat 节点重要?

作用 说明
理解梯度累加机制 确保你知道为什么同一个变量会"收集"多个梯度
调试反向传播问题 在复杂图中追踪某个变量为何产生多个梯度源
构建自定义计算图 如果你用低层 API 实现反向传播,需要手动合并梯度
避免梯度误差 忽略 repeat 会导致梯度少算路径、模型无法收敛

✅ 八、总结

项目 描述
repeat 节点 一个变量/张量在计算图中被多次使用
在计算图中的表现 多条从变量发出的边
反向传播规则 所有路径上的梯度进行累加
框架支持 自动处理 repeat 节点的梯度合并
与分支节点关系 本质上相似,常常同时存在
相关推荐
早起CaiCai几秒前
【Pytorch 实践1】手写数字
人工智能·pytorch·python
星浩AI几秒前
(七)GPT2中文生成模型定制化微调训练[附源码]
pytorch·深度学习·llm
monsion11 分钟前
Loop Engineering:你不再 prompt agent,而是设计 prompt agent 的系统
大数据·人工智能·prompt
卡梅德生物科技小能手14 分钟前
卡梅德生物科普MCAM(黑色素瘤细胞黏附分子)
人工智能·经验分享·深度学习
老兵发新帖18 分钟前
next drawio界面卡死问题分析
人工智能·draw.io
一楼的猫26 分钟前
茄子写作助手——品牌搜索突破9万后的技术型品牌认知与官网入口指南
人工智能·学习·机器学习·chatgpt·ai写作
ZeroNews内网穿透28 分钟前
NAS部署Hermes AI Agent + 零讯内网穿透,实现远程可管理的AI助手
人工智能·安全·ai·内网穿透
隔窗听雨眠40 分钟前
原生一体化多模态大模型技术研究:从拼接到统一的架构革命
人工智能·架构
月疯1 小时前
torch:expand和repeate的区别
开发语言·python·深度学习
羊羊小栈1 小时前
Uplift营销供应链协同决策系统(基于Uplift因果推断与运筹优化算法)
前端·人工智能·算法·毕业设计·大作业