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

海淀网站建设济南网站推广

海淀网站建设,济南网站推广,工商核名在哪个网站,海东高端网站建设公司Tensor与Variable pytorch两个基本对象:Tensor(张量)和Variable(变量) 其中,tensor不能反向传播,variable可以反向传播(forword)。 反向传播是为了让神经网络更新前面…

Tensor与Variable

pytorch两个基本对象:Tensor(张量)和Variable(变量)

其中,tensor不能反向传播,variable可以反向传播(forword)。

反向传播是为了让神经网络更新前面的参数,可以想象成做题的时候(题目就可以想成一个一个的神经元节点),我们有做对的,有做错的,做错的题目就可以反过来告诉我们应该重点学习哪一块知识,学习哪些题型,然后神经网络通过forward把这个节点的参数权重调大,这样就是方向传播更新参数

tensor的算术运算和选取操作与numpy一样,与numpy相似的运算操作都可以迁移过来。

variable是一种可以不断变化的变量,符合反向传播,参数更新的属性。pytorch的variable是一个存放会变化值的地理位置,里面的值会不停变化,像装糖果(糖果就是数据,即tensor)的盒子,糖果的数量不断变化。pytorch都是由tensor计算的,而tensor里面的参数是variable形式。

在PyTorch中计算图的特点总结如下:autograd根据用户对Variable的操作来构建其计算图

  1. requires_grad

variable默认是不需要被求导的,即requires_grad属性默认为False,如果某一个节点的requires_grad为True,那么所有依赖它的节点requires_grad都为True。

  1. volatile

variable的volatile属性默认为False,如果某一个variable的volatile属性被设为True,那么所有依赖它的节点volatile属性都为True。volatile属性为True的节点不会求导,volatile的优先级比requires_grad高。

  1. retain_graph

多次反向传播(多层监督)时,梯度是累加的。一般来说,单次反向传播后,计算图会free掉,也就是反向传播的中间缓存会被清空【这就是动态度的特点】。为进行多次反向传播需指定retain_graph=True来保存这些缓存。

  1. backward(grad_variables=None,retain_graph=None,create_graph=None)

反向传播,求解Variable的梯度。放在中间缓存中。

PyTorch 的 backward 为什么有一个 grad_variables 参数?

假设 x 经过一番计算得到 y,那么 y.backward(w) 求的不是 y 对 x 的导数,而是 l = torch.sum(y*w) 对 x 的导数。w 可以视为 y 的各分量的权重,也可以视为遥远的损失函数 l 对 y 的偏导数。也就是说,不一定需要从计算图最后的节点 y 往前反向传播,从中间某个节点 n 开始传也可以,只要你能把损失函数 l 关于这个节点的导数 dl/dn 记录下来,n.backward(dl/dn) 照样能往前回传,正确地计算出损失函数 l 对于节点 n 之前的节点的导数。特别地,若 y 为标量,w 取默认值 1.0,才是按照我们通常理解的那样,求 y 对 x 的导数。

  1. grad_variable

grad_variables是y求导时的梯度参数,由于autograd仅用于标量,因此当y不是标量且在声明时使用了requires_grad=True,必须指定grad_variables参数,在完成原始的反向传播之后得到的梯度会对这个grad_variables进行修正,然后将结果保存在Variable的grad中。grad_variables形状必须与Variable一致。在深度学习中求导与梯度有关,因此grad_variables一般会定义类似为[1, 0.1, 0.01, 0.001],表示梯度的方向,取较小的之不会对求导效率有影响。

torch.autograd.Variable是Autograd的核心类,它封装了Tensor,并整合了反向传播的相关实现

Variable和tensor的区别和联系:

  1. Variable是篮子,而tensor是鸡蛋,鸡蛋应该放在篮子里才能方便拿走(定义variable时一个参数就是tensor)

  2. Variable这个篮子里除了装了tensor外还有requires_grad参数,表示是否需要对其求导,默认为False

  3. Variable这个篮子呢,自身有一些属性

  • 比如grad,梯度variable.grad是d(y)/d(variable)保存的是变量y对variable变量的梯度值,如果requires_grad参数为False,所以variable.grad返回值为None,如果为True,返回值就为对variable的梯度值

  • 比如grad_fn,对于用户自己创建的变量(Variable())grad_fn是为none的,也就是不能调用backward函数,但对于由计算生成的变量,如果存在一个生成中间变量的requires_grad为true,那其的grad_fn不为none,反则为none

  • 比如data,这个就很简单,这个属性就是装的鸡蛋(tensor)

Varibale包含三个属性:

data:存储了Tensor,是本体的数据
grad:保存了data的梯度,本事是个Variable而非Tensor,与data形状一致
grad_fn:指向Function对象,用于反向传播的梯度计算之用

http://www.tj-hxxt.cn/news/107260.html

相关文章:

  • 如何做一个网站设计网站排名优化教程
  • 动漫制作与设计专业百度搜索引擎优化指南最新版
  • 做网站需要备几个案搜索引擎营销与seo优化
  • 做adsense对网站有什么要求百度账号找回
  • 楚雄市城乡建设局网站成都网站排名生客seo怎么样
  • 公众号开发者有什么用关键词优化的作用
  • 河北企业网站建设技术全球网络营销公司排行榜
  • 李沧网站建设新网站怎么推广
  • 上海哪个区最繁华南京百度网站快速优化
  • 个人做游戏网站网销怎么找客户资源
  • 网站瀑布流怎么做千锋教育学费多少
  • 公司网站建设网络推广怎么做效果好
  • wordpress建网站视频国内建站平台
  • wordpress文章标题高亮插件seo公司网站推广
  • 网站权重值在较长时间内是一定的页面优化站长资源平台
  • 网站在线服务模块怎么做测试网络营销主要特点有哪些
  • 网站系统设计目标包就业的培训机构
  • 私人影吧服务器seo权重优化软件
  • 网站开发定制企业建站模板
  • 肇庆网站开发公司360手机优化大师安卓版
  • 淘客怎么做自己的网站app开发需要多少钱
  • 深圳宝安网站建设百度seo工作室
  • 网站关键词百度自然排名优化宣传产品的方式
  • 蜘蛛爬取网站搜索引擎优化的实验结果分析
  • 广东联通通信建设有限公司 网站焊工培训心得体会
  • 泉州找工作哪个网站好不死鸟分享友情链接
  • 如何在网站中做二级下拉菜单有哪些网络营销公司
  • 漯河网站关键词优化十大微商推广平台
  • 佛山专业网站开发公司精准客户数据采集软件
  • php做不了大型网站如何做免费网络推广