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

神经网络之计算图repeat节点

🌀 一、什么是 repeat 节点?

✅ 定义:

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

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


🎯 二、举个具体例子

考虑如下函数:

[
L = x \cdot x + \sin(x)
]

分析:

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

🧠 三、repeat 节点 vs 分支节点

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

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


🔁 四、反向传播中的作用

关键点:

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

继续看上面的例子:

[
L = x^2 + \sin(x)
]


步骤1:前向传播

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

步骤2:反向传播

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

[
\frac{dL}{dx} = \frac{da}{dx} + \frac{db}{dx}
= 2x + \cos(x)
]

这里 ( x ) 就是 repeat 节点:

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

🧮 五、计算图结构图示

     x/ | \
x*x  |  sin(x)\  |   /+ |L

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


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

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

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

PyTorch 示例代码

import torchx = 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 节点的梯度合并
与分支节点关系本质上相似,常常同时存在
http://www.dtcms.com/a/495240.html

相关文章:

  • 河北廊坊做网站珠海企业网站设计
  • 网站建设培训 ppt做网站有哪些
  • 【RK3588开发】RKNN库的使用
  • 使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 18--测试框架Pytest基础 2--插件和参数化
  • 玩具 网站模板成立一个网站
  • 阿里网站注册阿里云网站怎么建设
  • 【排查实录】Web 页面能打开,服务器能通接口,客户端却访问失败?原因全在这!
  • 【Linux】系统性能排查:解决卡顿问题
  • 建网站要注意的细节建免费的网站
  • 手机网站建设收费网站建设 合肥
  • Qwen3-0.6模型开关思考模式测试
  • FT62FC3X 8位MCU单片机选型表,详细解析FT62FC31A/32A/33A/35A/3FA
  • 鸿蒙NEXT Sensor Service Kit开发指南:解锁传感器数据的无限潜能
  • 开源项目:FlyCut Caption智能视频字幕裁剪工具
  • Fedora 16上源码建立pydev + eclipse的OpenStack开发环境笔记草稿
  • 便携式榨汁机方案开发,榨汁机果汁机MCU控制方案设计
  • 杭州如何做百度的网站网页是什么
  • 【软考备考】软件架构设计需要考虑系统性能 如何使用缓存提高系统性能知识点七
  • 南京做网站dmooo学校自己做的网站需要买服务器吗
  • 鸿蒙实现可以上下左右滑动的表格-摆脱大量ListScroller
  • 笔试强训:Week -2
  • webpack - 单独打包指定JS文件(因为不确定打出的前端包所访问的后端IP,需要对项目中IP配置文件单独拿出来,方便运维部署的时候对IP做修改)
  • 有的网站打开的是html结尾的路径有的不是wordpress放在二级目录
  • 展示型企业网站设计方案2016年做网站能赚钱
  • 【论文精读】RD-Agent-Quant:基于多智能体框架的量化因子与模型研发自动化系统
  • 网站开发大概价格建设电子商务网站流程
  • Python 练习脚本(从基础到高级150个练习)
  • GDDR6总结(1)-背景及优劣
  • Redis 中文学习手册
  • 网站改版 程序变了 原来的文章内容链接地址 打不开怎么办以百度云做网站空间