张量运算和梯度

Tensor Operation and gradient

我在 youtube 上看一些教程,下面的代码示例用于解释导数

创建张量。

    x = torch.tensor(3.)

    w = torch.tensor(4., requires_grad=True)

    b = torch.tensor(5., requires_grad=True)

    x, w, b

算术运算

    y = w * x + b

    y

计算导数

    y.backward()

显示渐变

    print('dy/dx:', x.grad)

    print('dy/dw:', w.grad)

    print('dy/db:', b.grad)

输出

dy/dx: None

dy/dw: 张量(3.)

dy/db: 张量(1.)

谁能解释一下我们如何将张量 (3.) 和张量 (1.) 作为梯度的输出。我需要了解pytorch是如何在幕后执行这个操作的。

如有任何帮助,我们将不胜感激。

你有y = w*x + b,那么

dy/dx = w
dy/dw = x
dy/db = 1

由于您没有为 x 设置 requires_grad=True,PyTorch 不会计算导数 w.r.t。它。
因此,dy/dx = None

其余为对应张量的值。因此,最终输出为

dy/dx: None
dy/dw: tensor(3.)
dy/db: tensor(1.)