神经网络之计算图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 节点的梯度合并
与分支节点关系 本质上相似,常常同时存在
相关推荐
sww_10267 小时前
RAG检索增强 ETL最佳实战
人工智能·python·spring
wanping158259923418 小时前
AI Agent(学习六-FAISS 持久化到磁盘(重启不丢记忆))
人工智能·学习·faiss
童话名剑8 小时前
序列模型与集束搜索(吴恩达深度学习笔记)
人工智能·笔记·深度学习·机器翻译·seq2seq·集束搜索·编码-解码模型
UI设计兰亭妙微8 小时前
人工智能大模型管理平台UI设计
人工智能
发哥来了8 小时前
主流AI视频生成商用方案选型评测:五大核心维度对比分析
大数据·人工智能
物联网APP开发从业者8 小时前
2026年AI智能产品开发行业十大创新解决方案
人工智能
badfl8 小时前
VSCode Claude Code插件配置教程:使用、配置中转API、常见问题
人工智能·vscode·ai
Faker66363aaa9 小时前
指纹过滤器缺陷检测与分类 —— 基于MS-RCNN_X101-64x4d_FPN_1x_COCO模型的实现与分析_1
人工智能·目标跟踪·分类
金融小师妹9 小时前
基于LSTM-GARCH-EVT混合模型的贵金属极端波动解析:黄金白银双双反弹的逻辑验证
大数据·人工智能·深度学习·机器学习
代码匠心9 小时前
Trae IDE 隐藏玩法:接入即梦 AI,生成高质量大片!
人工智能·ai·trae·skills