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

瀑布式网站长沙房价2020最新价格

瀑布式网站,长沙房价2020最新价格,网站的申请,网站做百度推广需要哪些条件目录4:自动微分4.1:backward求导4.2: autograd.grad求导4:自动微分 神经网络依赖反向传播求梯度来更新网络的参数,求梯度是个非常复杂的过程,在Pytorch中,提供了两种求梯度的方式,一个是backward,将求得的结果保存在自…

目录

  • 4:自动微分
    • 4.1:backward求导
    • 4.2: autograd.grad求导

4:自动微分

神经网络依赖反向传播求梯度来更新网络的参数,求梯度是个非常复杂的过程,在Pytorch中,提供了两种求梯度的方式,一个是backward,将求得的结果保存在自变量的grad属性中,另外一种方式是torch.autograd.grad。

4.1:backward求导

使用backward进行求导。这里主要介绍了求导的两种对象,标量Tensor和非标量Tensor的求导。两者的主要区别是非标量Tensor求导的主要区别是加了一个gradient的Tensor,其尺寸与自变量X的尺寸一致。在求完导后,需要与gradient进行点积,所以只是一般的求导的话,设置的参数全部为1。最后还有一种使用标量的求导方式解决非标量求导,只需了解。

# 标量Tensor求导
# 求 f(x) = a*x**2 + b*x + c 的导数
import numpy as np 
import torch 
x = torch.tensor(-2.0,requires_grad=True)
a = torch.tensor(1.0)
b = torch.tensor(2.0)
c = torch.tensor(3.0)
y= a*torch.pow(x,2) + b*x +c 
y.backward() ##backward求的梯度会存储在自变量x的grad属性中
dy_dx =x.grad
print(dy_dx)# 非标量Tensor求导
# 求 f(x) = a*x**2 + b*x + c 的导数
x = torch.tensor([[-2.0,-1.0],[0.0,1.0]], requires_grad=True)
a = torch.tensor(1.0)
b = torch.tensor(2.0)
c = torch.tensor(3.0)
gradient=torch.tensor([[1.0,1.0],[1.0,1.0]])
y = a*torch.pow(x,2)+b*x+c
y.backward(gradient=gradient) 
dy_dx_new =x.grad 
print(dy_dx_new)# 使用标量求导方式解决非标量求导
# 求 f(x) = a*x**2 + b*x + c 的导数
x = torch.tensor([[-2.0,-1.0],[0.0,1.0]], requires_grad=True)
a = torch.tensor(1.0)
b = torch.tensor(2.0)
c = torch.tensor(3.0)
gradient=torch.tensor([[1.0,1.0],[1.0,1.0]])
y = a*torch.pow(x,2)+b*x+c
z=torch.sum(y*gradient)
z.backward()
dy_dx_new1=x.grad
print(dy_dx_new1)

结果如下:

tensor(-2.)
tensor([[-2.,  0.],[ 2.,  4.]])
tensor([[-2.,  0.],[ 2.,  4.]])

4.2: autograd.grad求导

import torch#单个自变量求导
# 求 f(x) = a*x**4 + b*x + c 的导数
x = torch.tensor(1.0, requires_grad=True)
a = torch.tensor(1.0)
b = torch.tensor(2.0)
c = torch.tensor(3.0)
y = a * torch.pow(x, 4) + b * x + c
#create_graph设置为True,允许创建更高阶级的导数
#求一阶导
dy_dx = torch.autograd.grad(y, x, create_graph=True)[0]
#求二阶导
dy2_dx2 = torch.autograd.grad(dy_dx, x, create_graph=True)[0]
#求三阶导
dy3_dx3 = torch.autograd.grad(dy2_dx2, x)[0]
print(dy_dx.data, dy2_dx2.data, dy3_dx3)# 多个自变量求偏导
x1 = torch.tensor(1.0, requires_grad=True)
x2 = torch.tensor(2.0, requires_grad=True)
y1 = x1 * x2
y2 = x1 + x2
#只有一个因变量,正常求偏导
dy1_dx1, dy1_dx2 = torch.autograd.grad(outputs=y1, inputs=[x1, x2], retain_graph=True)
print(dy1_dx1, dy1_dx2)
# 若有多个因变量,则对于每个因变量,会将求偏导的结果加起来
dy1_dx, dy2_dx = torch.autograd.grad(outputs=[y1, y2], inputs=[x1, x2])
print(dy1_dx, dy2_dx)

结果如下:

tensor(6.) tensor(12.) tensor(24.)
tensor(2.) tensor(1.)
tensor(3.) tensor(2.)
http://www.dtcms.com/a/481479.html

相关文章:

  • 如何做一款服装网站中铁建设集团招聘官网
  • 做物流的网站有哪些网页设计基础括号代码大全
  • 要是360网站不安全怎么做ps个人主页设计模板
  • 手机网站js特效私募股权基金网站建设
  • 北京市建设局网站首页重庆网站改版
  • 上海专业网站建设价格深圳网站建设推广方案
  • 网站变灰江苏省建设局官方网站查询
  • 上海大学生兼职做网站哪个网站做外贸假发好
  • 网站友链怎么做wordpress需要会php
  • 购物网站产品做促销能赚钱吗做网站打广告犯法吗
  • 阳江市做网站的公司有没学做早餐的网站
  • 做一个英文网站百度竞价官网
  • 台州建设监理协会网站做资源网站
  • 浙江省建设执业资格中心网站深圳网站建设找哪家公司
  • wordpress菜单底部导航三明seo
  • 火星建站和八亿建站在wordpress中图标
  • 东莞网站建设 信科网络境外公司注册
  • 深圳微商城网站设计费用服务网站策划书
  • 百度网站怎么申请注册北京搭建公司
  • 建立互联网公司网站百度网站优化哪家好
  • seo网站排名优化公司网站开发 平台
  • 昌邑市住房和建设局网站江门做网站公司开网络公司
  • 上海松江做网站公司成都小程序开发方案
  • 网站开发非常之旅工商银行手机银行app下载
  • 酒店建设网站的意义旅游机票网站建设
  • php学校网站模板怎么做公司官方网站
  • 网站建设需要步骤如何判断一个网站的关键词是否难做
  • 张家港网站制作公司通过百度指数不能判断出
  • 学生网站建设首页天津网站建设软件开发招聘
  • 有做兼职赚钱的网站吗下载企业网站