首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用autograd查找最小/最大点

如何使用autograd查找最小/最大点
EN

Stack Overflow用户
提问于 2019-04-10 12:20:36
回答 1查看 528关注 0票数 1

假设我们有一个简单的函数y=sin(x**2),我如何使用autograd查找所有一阶导数值为0的X:s?

EN

回答 1

Stack Overflow用户

发布于 2019-04-11 03:42:00

下面的代码可以找到一阶导数为零的点。然而,根据随机初始化,它只会找到一个点。如果你想找到所有的点,你可以尝试在一些想要的网格上迭代大量的随机初始化。

代码语言:javascript
复制
import torch 
import numpy as np
# initialization
x = torch.tensor(np.random.rand(1)).requires_grad_(True)

while (x.grad is None or torch.abs(x.grad)>0.01):
    if (x.grad is not None):
        # zero grads
        x.grad.data.zero_()
    # compute fn
    y = torch.sin(x**2)
    # compute grads
    y.backward()
    # move in direction of / opposite to grads
    x.data = x.data - 0.01*x.grad.data
    # use below line to move uphill 
    # x.data = x.data + 0.01*x.grad.data

print(x)
print(y)
print(x.grad)

另请参阅how to apply gradients manually in pytorch

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55604691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档