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

江西省城乡建设厅网站安心保险官方网站

江西省城乡建设厅网站,安心保险官方网站,佛山电脑培训班哪里有,旅游网站建设策划方案文章目录 概念计算图自动求导的两种模式 自动求导-代码标量的反向传播非标量变量的反向传播将某些计算移动到计算图之外 概念 核心:链式法则 深度学习框架通过自动计算导数(自动微分)来加快求导。 实践中,根据涉及号的模型,系统会构建一个计…

文章目录

    • 概念
      • 计算图
      • 自动求导的两种模式
    • 自动求导-代码
      • 标量的反向传播
      • 非标量变量的反向传播
      • 将某些计算移动到计算图之外

概念

核心:链式法则

深度学习框架通过自动计算导数(自动微分)来加快求导。

实践中,根据涉及号的模型,系统会构建一个计算图,来跟踪计算是哪些数据通过哪些操作组合起来产生输出。

自动微分使系统能够随后反向传播梯度。

反向传播:跟踪整个计算图,填充关于每个参数的偏导数。

计算图

  1. 将代码分解成操作子,将计算表示成一个无环图
  2. 将计算表示成一个无环图、

自动求导的两种模式

反向传播

  1. 构造计算图
  2. 前向:执行图,存储中间结果
  3. 反向:从相反方向执行图 - 不需要的枝可以减去,比如正向里的x和y连接的那个枝

自动求导-代码

标量的反向传播

案例:假设对函数 y = 2 x T x y=2x^Tx y=2xTx关于列向量x求导

1.首先初始化一个向量

x = torch.arange(4.0) # 创建变量x并为其分配初始值
print(x) #tensor([0., 1., 2., 3.])

2.计算y关于x的梯度之前,需要一个地方来存储梯度。

x.requires_grad_()等价于x=torch.arange(4.0,requires_grad=True),这样PyTorch会跟踪x的梯度,并生成grad属性,该属性里记录梯度。

通常用于表示某个变量或返回值“有意为空”或"暂时没有值",已经初始化但是没有值

x.requires_grad_(True)
print(x.grad)  # 默认值是None,存储导数。

3.计算y的值,y是一个标量,在python中表示为tensor(28., ),并记录是通过某种乘法操作生成的。

y = 2 * torch.dot(x, x)
print(y) # tensor(28., grad_fn=<MulBackward0>)

4.调用反向传播函数来自动计算y关于x每个分量的梯度。

y.backward()
print(x.grad) # tensor([ 0.,  4.,  8., 12.])

我们可以知道根据公式来算, y = 2 x T x y=2x^Tx y=2xTx关于列向量x求导的结果是4x,根据打印结果来看结果是正确的。

5.假设此时我们需要继续计算x所有分量的和,也就是 y = x . s u m ( ) y=x.sum() y=x.sum()

在默认情况下,PyTorch会累计梯度,我们需要调用grad.zero_清空之前的值。

x.grad.zero_()
y = x.sum() # y = x₁ + x₂ + x₃ + x₄
print(y)
y.backward()
print(x.grad) # tensor([1., 1., 1., 1.])

非标量变量的反向传播

在深度学习中,大部分时候目的是 将批次的损失求和之后(标量)再对分量求导。

y.sum()将 y的所有元素相加,得到一个标量 s u m ( y ) = ∑ i = 1 n x i 2 sum(y)=\sum_{i=1}^n x_i^2 sum(y)=i=1nxi2

y.sum().backward()等价于y.backward(torch.ones(len(x))

x.grad.zero_()
y = x * x  # y是一个矩阵
print(y) # tensor([0., 1., 4., 9.], grad_fn=<MulBackward0>)  4*1的矩阵
# 等价于y.backward(torch.ones(len(x)))
y.sum().backward()
print(x.grad)  # [0., 2., 4., 6.]

将某些计算移动到计算图之外

假设 y = f ( x ) , z = g ( y , x ) y=f(x),z=g(y,x) y=f(x),z=g(y,x),我们需要计算 z z z关于 x x x的梯度,正常反向传播时,梯度会通过 y y y x x x 两条路径传播到 x x x ∂ z ∂ x = ∂ g ∂ y ∂ y ∂ x + ∂ g ∂ x \frac{\partial z}{\partial x} = \frac{\partial g}{\partial y} \frac{\partial y}{\partial x} +\frac{\partial g}{\partial x} xz=ygxy+xg。但由于某种原因,希望将 y y y视为一个常数,忽略 y y y x x x的依赖: ∂ z ∂ x ∣ y 常数 = ∂ g ∂ x \frac{\partial z}{\partial x} |_{y常数} =\frac{\partial g}{\partial x} xzy常数=xg

通过 detach() 方法将 y y y从计算图中分离,使其不参与梯度计算。

z . s u m ( ) 求导 = ∂ ∑ z i ∂ x i = u i z.sum() 求导 = \frac{\partial \sum z_i}{\partial x_i} = u_i z.sum()求导=xizi=ui

x.grad.zero_()
y = x * x 
print(y) # tensor([0., 1., 4., 9.], grad_fn=<MulBackward0>)
u = y.detach() # 把y看成一个常数从计算图中分离,不参与梯度计算,但值还是x*x
print(u) # tensor([0., 1., 4., 9.])
z = u * x # z是一个常数*x
print(z) # tensor([ 0.,  1.,  8., 27.], grad_fn=<MulBackward0>)
z.sum().backward() print(x.grad == u) # tensor([True,True,true,True])

执行y.detach()返回一个计算图之外,但值同y一样的tensor,只是将函数z中的y替换成了这个等价变量。

但对于y本身来说还是一个在该计算图中,就可以在y上调用反向传播函数,得到 y = x ∗ x y=x*x y=xx关于 x x x的导数 2 x 2x 2x

x.grad.zero_()
y.sum().backward()
print(x.grad == 2 * x) # tensor([True,True,true,True])

文章转载自:

http://F1D21YKA.thjpf.cn
http://VqZvrkk1.thjpf.cn
http://oO6GqdlT.thjpf.cn
http://aAJrJ1Kf.thjpf.cn
http://rDif9WL1.thjpf.cn
http://J8opKxyw.thjpf.cn
http://vGefsqHE.thjpf.cn
http://46VUZny3.thjpf.cn
http://D60Y4vGd.thjpf.cn
http://b8jvur8H.thjpf.cn
http://Ho9lql6I.thjpf.cn
http://i5HiIYNW.thjpf.cn
http://Dsufvmzz.thjpf.cn
http://1xYUb89t.thjpf.cn
http://oMuFLNr5.thjpf.cn
http://Zudqv3zF.thjpf.cn
http://vPOAYNKn.thjpf.cn
http://ezhuI84u.thjpf.cn
http://8H5NGIZL.thjpf.cn
http://t7oJUiRx.thjpf.cn
http://gBKSWDAW.thjpf.cn
http://A6bL4x3Z.thjpf.cn
http://VDwnfVDp.thjpf.cn
http://X6s3hSls.thjpf.cn
http://Aj7U0cLo.thjpf.cn
http://sKPi8bDC.thjpf.cn
http://aB8zAE14.thjpf.cn
http://ujgAJSui.thjpf.cn
http://QrLB5M2n.thjpf.cn
http://XS9UTeYH.thjpf.cn
http://www.dtcms.com/wzjs/709580.html

相关文章:

  • 建设网站的岗位职责直播网站创做
  • 上海建设银行网站查询余额如何做商业网站分析
  • 做娱乐网站彩票代理龙岩市兼职网
  • 网站设置成黑白杭州正晖建设工程有限公司网站
  • 惠州水口网站建设oa办公系统怎么注册
  • 惠州市建设厅网站沙田网站建设
  • 网站建设方案报价单新手如何做网络推广
  • vvic一起做网站东莞响应式网站建设
  • 网站规划与建设实验心得体会大连工业大学怎么样
  • 电商型网站设计企业产品发布会详细流程
  • 教育培训学校网站建设方案互联网推广公司
  • 怎么做企业官方网站郑州做网站要
  • 知乎做笔记的网站网站建设专业是干什么的
  • 查工程中标信息哪个网站wordpress标签扩展
  • 包头网站建设SEO优化制作设计公司个人是否可以申请持有网站
  • 网站注册备案如何注册wordpress
  • 网站推广的主要途径自己做网站自己买服务器
  • 网站小图片素材建筑施工安全员c证查询
  • 现在做跨境电商还能赚钱吗seo排名技巧
  • 北京网站制作开发公司唐山市住房城乡建设局网站
  • 中山网站建设品牌wordpress自媒体主题更新失败
  • 淘宝做推广网站建立网站需要技术吗
  • 简洁公司网站源码对招聘公司做评价的网站
  • seo视频网页入口网站推广wordpress特效插件
  • 广州网站推广联盟wordpress根据用户显示文章
  • 怎样建立网站邢台建设银行网站
  • 单页网站 seo黄州做网站的
  • 网站里面内外链接如何做做聚美优品网站得多少钱
  • 网站建设拓扑图苏州app定制
  • 网站搭建设计 是什么意思海口网红图书馆