美文网首页
学习利用PyTorch做自然语言处理(3)-自动梯度

学习利用PyTorch做自然语言处理(3)-自动梯度

作者: 公输昊少 | 来源:发表于2019-12-05 22:53 被阅读0次

    本文介绍了有关梯度的定义及用PyTorch自动求梯度的方法。

    1.梯度的定义

    假设函数f: \mathbb{R}^n \rightarrow \mathbb{R}的输入是一个n维向量x = [x_1, x_2, \ldots, x_n]^\top,输出是标量。函数f(x)有关x的梯度是一个由n个偏导数组成的向量:

    image

    2.PyTorch自动求梯度

    PyTorch中求梯度非常简单,只要在定义一个张量时,将其requires_grad参数指定为True,那么之后该张量经过一些操作后得到的标量就可以求导了,自然也可以得出梯度。
    例如,我们定义一个2×2的,元素都为1.的张量。

    import torch
    x = torch.ones(2, 2, requires_grad=True)
    

    这里要注意,如果想要自动求导,那么张量的元素只能为浮点数,否则会报如下图所示的错误。

    image
    然后我们对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

    相关文章

      网友评论

          本文标题:学习利用PyTorch做自然语言处理(3)-自动梯度

          本文链接:https://www.haomeiwen.com/subject/ojzjgctx.html