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

个人电脑搭建成网站服务器关于seo的行业岗位有哪些

个人电脑搭建成网站服务器,关于seo的行业岗位有哪些,网站建站行业,罗湖做网站哪家专业自动微分 正如上节所说,求导是几乎所有深度学习优化算法的关键步骤。 虽然求导的计算很简单,只需要一些基本的微积分。 但对于复杂的模型,手工进行更新是一件很痛苦的事情(而且经常容易出错)。 深度学习框架通过自动…

自动微分

正如上节所说,求导是几乎所有深度学习优化算法的关键步骤。
虽然求导的计算很简单,只需要一些基本的微积分。
但对于复杂的模型,手工进行更新是一件很痛苦的事情(而且经常容易出错)。

深度学习框架通过自动计算导数,即自动微分(automatic differentiation)来加快求导。
实际中,根据设计好的模型,系统会构建一个计算图(computational graph),
来跟踪计算是哪些数据通过哪些操作组合起来产生输出。
自动微分使系统能够随后反向传播梯度。
这里,反向传播(backpropagate)意味着跟踪整个计算图,填充关于每个参数的偏导数。

一个简单的例子

作为一个演示例子,(假设我们想对函数 y = 2 x ⊤ x y=2\mathbf{x}^{\top}\mathbf{x} y=2xx关于列向量 x \mathbf{x} x求导)。
首先,我们创建变量x并为其分配一个初始值。

import torchx = torch.arange(4.0)
x

在这里插入图片描述
[在我们计算 y y y关于 x \mathbf{x} x的梯度之前,需要一个地方来存储梯度。]
重要的是,我们不会在每次对一个参数求导时都分配新的内存。
因为我们经常会成千上万次地更新相同的参数,每次都分配新的内存可能很快就会将内存耗尽。
注意,一个标量函数关于向量 x \mathbf{x} x的梯度是向量,并且与 x \mathbf{x} x具有相同的形状。

x.requires_grad_(True)  # 等价于x=torch.arange(4.0,requires_grad=True)
x.grad  # 默认值是None

在 PyTorch 里,requires_grad 是张量(Tensor)的一个属性,用于表明是否要对该张量进行梯度计算。若 requires_grad 为 True,那么在后续的计算中,PyTorch 会自动追踪与该张量相关的所有运算,并且可以通过反向传播算法计算其梯度。

(现在计算 y y y)

y = 2 * torch.dot(x, x)
y

在 PyTorch 里,torch.dot 函数用于计算两个一维张量(也就是向量)的点积。点积的计算规则是将两个向量对应位置的元素相乘,然后把这些乘积相加。在代码里,torch.dot(x, x) 计算的是向量 x 与自身的点积。假设 x = [x₁, x₂, x₃, ..., xₙ],那么 torch.dot(x, x) 的结果就是 x 1 2 + x 2 2 + x 3 2 + . . . + x n 2 x_1^2 + x_2^2 + x_3^2 + ... + x_n^2 x12+x22+x32+...+xn2

在这里插入图片描述

grad_fn=<MulBackward0> 表明 y 是经过乘法操作得到的,并且可以进行反向传播来计算梯度。

x是一个长度为4的向量,计算xx的点积,得到了我们赋值给y的标量输出。接下来,[通过调用反向传播函数来自动计算y关于x每个分量的梯度],并打印这些梯度。

y.backward()#计算并存储 y 关于 x 的梯度
x.grad#访问梯度值

y.backward() 这行代码的作用是执行反向传播算法。反向传播的核心目的是计算标量 y 关于所有具有requires_grad=True 的输入张量(这里就是 x)的梯度。它会根据链式法则,从 y 开始逆向计算每个中间变量和输入变量的梯度,并将这些梯度存储在相应张量的 grad 属性中。

x.grad 用于获取张量 x 的梯度。在调用 y.backward() 之前,x.grad 的值通常为 None。调用 y.backward() 之后,PyTorch 会计算并存储 y 关于 x 的梯度,此时通过 x.grad 就可以访问到这些梯度值。

在这里插入图片描述
函数 y = 2 x ⊤ x y=2\mathbf{x}^{\top}\mathbf{x} y=2xx关于 x \mathbf{x} x的梯度应为 4 x 4\mathbf{x} 4x
让我们快速验证这个梯度是否计算正确。

x.grad == 4 * x

在这里插入图片描述
[现在计算x的另一个函数。]

# 在默认情况下,PyTorch会累积梯度,我们需要清除之前的值
x.grad.zero_()
y = x.sum()
y.backward()
x.grad

x.grad.zero_()
在 PyTorch 里,当我们进行多次反向传播时,梯度会累积在 x.grad 中。x.grad.zero_() 这行代码是一个原地操作,其作用是将 x 的梯度清零,以避免之前的梯度对当前计算产生影响。

在这里插入图片描述

非标量变量的反向传播

y不是标量时,向量y关于向量x的导数的最自然解释是一个矩阵。
对于高阶和高维的yx,求导的结果可以是一个高阶张量。

然而,虽然这些更奇特的对象确实出现在高级机器学习中(包括[深度学习中]),
但当调用向量的反向计算时,我们通常会试图计算一批训练样本中每个组成部分的损失函数的导数。
这里(我们的目的不是计算微分矩阵,而是单独计算批量中每个样本的偏导数之和。)

# 对非标量调用backward需要传入一个gradient参数,该参数指定微分函数关于self的梯度。
# 本例只想求偏导数的和,所以传递一个1的梯度是合适的
x.grad.zero_()
y = x * x
# 等价于y.backward(torch.ones(len(x)))
y.sum().backward()
x.grad

在这里插入图片描述

分离计算

有时,我们希望[将某些计算移动到记录的计算图之外]。
例如,假设y是作为x的函数计算的,而z则是作为yx的函数计算的。
想象一下,我们想计算z关于x的梯度,但由于某种原因,希望将y视为一个常数,
并且只考虑到xy被计算后发挥的作用。

这里可以分离y来返回一个新变量u,该变量与y具有相同的值,
但丢弃计算图中如何计算y的任何信息。
换句话说,梯度不会向后流经ux
因此,下面的反向传播函数计算z=u*x关于x的偏导数,同时将u作为常数处理,
而不是z=x*x*x关于x的偏导数。

x.grad.zero_()
y = x * x
u = y.detach()
z = u * xz.sum().backward()
x.grad == u

detach() 方法用于从计算图中分离出一个张量。调用 y.detach() 会返回一个新的张量 u,这个新张量和 y 具有相同的数据,但它不会再与原计算图产生关联,即不会再参与反向传播。也就是说,在后续的计算中,PyTorch 不会追踪 u 的梯度。

在这里插入图片描述
由于记录了y的计算结果,我们可以随后在y上调用反向传播,
得到y=x*x关于的x的导数,即2*x

x.grad.zero_()
y.sum().backward()
x.grad == 2 * x

在这里插入图片描述

Python控制流的梯度计算

使用自动微分的一个好处是:
[即使构建函数的计算图需要通过Python控制流(例如,条件、循环或任意函数调用),我们仍然可以计算得到的变量的梯度]。
在下面的代码中,while循环的迭代次数和if语句的结果都取决于输入a的值。

def f(a):b = a * 2while b.norm() < 1000:b = b * 2if b.sum() > 0:c = belse:c = 100 * breturn c

b.norm() 若不指定参数,默认计算的是 2 - 范数(也被称作欧几里得范数)。对于向量而言,2 - 范数是向量各个元素平方和的平方根;对于矩阵来说,2 - 范数是矩阵的最大奇异值

让我们计算梯度。

a = torch.randn(size=(), requires_grad=True)
d = f(a)
d.backward()

torch.randn 是 PyTorch 里用于生成服从标准正态分布(均值为 0,标准差为 1)的随机数的函数。其语法格式通常为 torch.randn(*size, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False),其中 size 参数用于指定生成张量的形状。

我们现在可以分析上面定义的f函数。
请注意,它在其输入a中是分段线性的。
换言之,对于任何a,存在某个常量标量k,使得f(a)=k*a,其中k的值取决于输入a,因此可以用d/a验证梯度是否正确。

a.grad == d / a

在这里插入图片描述

http://www.ds6.com.cn/news/17672.html

相关文章:

  • 做手机网站用什么程序好关键词seo优化排名
  • 音乐网站是否可以做浅度链接百度做网站
  • 网站的需求分析推广软文发布平台
  • wordpress怎样创建门户网站长沙seo智优营家
  • 个人网站首页界面网站设计师
  • 吉林市做网站淘宝关键词挖掘工具
  • wordpress 无法插入图片合肥seo按天收费
  • 网站建设高端网页设计青岛网站推广系统
  • 网站建设推广邮件2024年新闻时事热点论文
  • 公司网站建设费用入什么费用网站收录批量查询
  • 教师做课题可以参考什么网站今日热点新闻事件
  • 徐州百度推广seo在中国
  • 制作什么网站做毕业设计百度登录入口百度
  • 专业简历百度seo怎么优化
  • php企业网站源码 漂亮新媒体培训
  • 怎么在本地安装网站厦门谷歌seo公司有哪些
  • 福州日语网站建设网站改版seo建议
  • 简单的企业网站模板网络营销期末考试试题及答案
  • 网站制作排名优化东莞网站营销推广
  • WordPress交互式网站太原网站建设方案优化
  • 有哪些做汽车变速箱的门户网站外贸海外推广
  • 做的比较好的购物网站石家庄网站建设方案
  • 东莞的互联网公司关键词seo是什么
  • 空间站对接西安seo王
  • 上海高端品牌网站建设营销软文范例大全100
  • web前端最新招聘路由优化大师
  • 什么行业必须做网站点击器
  • 国内做的比较简洁的网站互联网项目推广
  • 电子商务网站建设案例教程网站怎么做的
  • 网站建设宗旨是什么关键词优化策略有哪些