ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

《动手学深度学习》第二章 预备知识

2021-08-07 18:57:58  阅读:166  来源: 互联网

标签:运算 预备 张量 动手 参数 梯度 求导 第二章 grad


函数参数前*表示参数为元组,表示接收若干个参数,转换成元组。
**表示参数为字典,表示接收若干个参数,转换为字典。就是函数中*args和**kwargs,接收若干个参数。

直接在列表 元组 字典变量名前面加*,表示会将其拆分为一个个的独立元素。

在这里插入图片描述

  • 张量索引值第一位是0,数据结构位序第一位是1
  • view()函数改变张量的形状
  • item()函数将一个标量的张量转换成一个数
  • 支持常用线性函数!

在GPU上进行张量运算,先判断是否可用,然后选择GPU,然后直接在GPU上创建张量。
在这里插入图片描述
张量的.grad_fn属性,这个属性表示创建这个张量的函数function,如果这个张量是通过某些运算得到的,就返回与运算相关的对象,如果不是就返回none。
backward() 完成参数的梯度运算。梯度会累积到.grad属性中去。比如,输入关于x的梯度就写x.grad 。

  • 梯度是会累加的,每进行一次求梯度的运算,梯度就会和上一次的累加,所以要清零

解释:当对一个标量求导时,也就是计算其对于某个变量的梯度时,不需要传入值,直接.backward()就可以了,得到的梯度值是与自变量同形的张量,
但是,当对张量求导时,由于张量对张量求导太复杂,所以要传入一个与输入张量形的张量,然后对原张量进行加权相加,使其变为一个标量,再对张量求导,得到一个与自变量同形的梯度值。

当我们不想记录某个变量的梯度时,使用with torch.no_grad() 将其包裹起来,常在评估模型的时候使用,此时不需要计算可训练参数的梯度。

当我们想改变张量的值,但是不想被记录被反向传播,可以对tensor.data进行操作,它也是一个张量,但计算梯度的那个属性是false。
在这里插入图片描述

标签:运算,预备,张量,动手,参数,梯度,求导,第二章,grad
来源: https://blog.csdn.net/qq_36849855/article/details/119490852

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有