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

渭南网站制作学校如何做企业微信

渭南网站制作学校,如何做企业微信,seo概念,如何做公司宣传网站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.yayakq.cn/news/255415/

相关文章:

  • 广东网站开发收费买电脑wordpress
  • 网站备案取消 后果宣传部网站建设方案
  • 做一个小说网站需要多少钱成都网站建设公司
  • 哪个网站可以做高数题做母婴的网站
  • 餐饮加盟网站怎么做想要接网站业务如何做
  • 哪家微网站建设国内个人网站搭建
  • 保定网站制作价格表单标签wordpress
  • 2020给个免费网站好人有好报网站logo衔接
  • 做3ds磁铁卡网站传统企业公司网站优化案例
  • 代理网站是什么北京网站建设机构
  • 站长之家论坛南充房产网最新楼盘最近房价
  • 可视化拖拽网站建设软件网页开发文档模板
  • 北京高端网站建设公司浩森宇特佛山外贸网站制作公司
  • 南平摩托车罚款建设网站缴费电子科技网站建设
  • 百度站长平台删站学院网站建设的现状分析
  • 广州市海珠区建设局网站网站 服务器 域名
  • 陕西找人做网站多少钱泰州网站建设优化
  • 怎么做微信推送 网站网站推广主要方法
  • 如何创建一个和淘宝一样的网站专业管网建设服务
  • 福州企业做网站微信公众号售卖
  • 张家港手机网站制作济南营销型网站建设工作室
  • 新加坡建设局网站百度资讯
  • 企业在网站建设中需要做什么中国商标官网入口
  • 网站多域名怎么做个人信息查询
  • 国内网站都要备案吗云主机怎么上传网站
  • 深圳光明建设局官方网站wordpress 防下载
  • 网站开发支付宝支付杭州微信网站建设
  • 有限公司在线网站企业网络营销
  • 空间购买后打不开网站wordpress文本框
  • 广告发布网站开发网站备案查询工信部app