本文介绍了有关梯度的定义及用PyTorch自动求梯度的方法。
1.梯度的定义
假设函数的输入是一个维向量,输出是标量。函数有关的梯度是一个由个偏导数组成的向量:
2.PyTorch自动求梯度
PyTorch中求梯度非常简单,只要在定义一个张量时,将其requires_grad
参数指定为True
,那么之后该张量经过一些操作后得到的标量就可以求导了,自然也可以得出梯度。
例如,我们定义一个2×2的,元素都为1.
的张量。
import torch
x = torch.ones(2, 2, requires_grad=True)
这里要注意,如果想要自动求导,那么张量的元素只能为浮点数,否则会报如下图所示的错误。
然后我们对
x
进行一些操作后得到一个标量z
:
y = x * x * 3
z = y.mean()
那么我们就可以对z
求导了:
z.backward()
则z
关于x
的梯度就是:
x.grad
版权声明:本文为博主原创文章,遵循 CC 4.0 BY 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://ywsun.site/articles/ptnlp_3.html