其他分享
首页 > 其他分享> > 《动手学深度学习》第二章 预备知识

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

作者:互联网

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

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

在这里插入图片描述

在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