【问题标题】:PyTorch derivative has no degreePyTorch 导数没有学位
【发布时间】:2018-10-08 14:42:16
【问题描述】:

我正在学习PyTorch官方docs的教程。我试图理解内容。从You can do many crazy things with autograd!开始

x = torch.randn(3, requires_grad=True)
y = x * 2

i = 0
while y.data.norm() < 100:
    y = y * 2
    i+= 1

print(x)
print(y)
print(i)

输出:

tensor([-0.6933,  0.1126,  0.3913], requires_grad=True)
tensor([-88.7455,  14.4082,  50.0871], grad_fn=<MulBackward>)
6

在点[0.1, 1.0, 0.0001]处找到x的导数

gradients = torch.tensor([0.1, 1.0, 0.0001], dtype=torch.float)
y.backward(gradients)
print(x.grad)

输出:

tensor([ 12.8000, 128.0000,   0.0128])

据我了解,i 等于 6。然后y = (2x)^7 和导数不同于PyTorch。替换值时,它具有 7 作为一个因素 到我的导数。

PyTorch 的答案只是将x 替换为dy/dx = 2^7 * x 的给定点

问题:

如何导出导数?

参考资料:

How to use PyTorch to calculate partial derivatives?

PyTorch Autograd automatic differentiation feature

【问题讨论】:

    标签: python pytorch


    【解决方案1】:

    如果你仔细观察表达式,会发现y = x * (2^7),其导数是2^7 * x

    【讨论】:

    • y = x * 2^7。具有 w.r.t x 的导数是2^7。因为x 是一级学位。它正在考虑链式规则,但我无法弄清楚。因为它只有 2 个变量。
    • @backothermoon 这里不需要做链式法则,因为导数只有xy。所以全导数和偏导数是一回事。
    猜你喜欢
    • 2021-01-14
    • 2021-03-28
    • 2019-02-05
    • 2020-05-05
    • 1970-01-01
    • 2021-04-15
    • 2021-06-14
    • 1970-01-01
    • 2020-09-28
    相关资源
    最近更新 更多