首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在autograd.gradcheck中使用PyTorch?

如何在autograd.gradcheck中使用PyTorch?
EN

Stack Overflow用户
提问于 2019-08-23 13:30:12
回答 1查看 6K关注 0票数 14

文档不包括任何梯度检查的示例用例,它在哪里有用?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-23 18:39:05

这里的文档中提供了一个示例用例:

https://pytorch.org/docs/master/notes/extending.html

您可能希望检查您实现的反向方法是否实际计算函数的导数。通过与使用小的有限差分的数值近似进行比较是可能的: 从torch.autograd导入gradcheck # gradcheck以一个元组作为输入,检查用这些张量计算的梯度#是否足够接近数值#逼近,如果它们都验证了这个条件,则返回True。输入= (torch.randn(20,20,dtype=torch.double,requires_grad=True),torch.randn(30,20,dtype=torch.double,requires_grad=True)) test =梯度检查(线性,输入,eps=1e-6,atol=1e-4)打印(测试)

如前所述,gradcheck函数的目的是验证自定义后向函数是否与梯度的数值近似一致。主要用例是在实现自定义后向操作时。在极少数情况下,应该在PyTorch中实现自己的向后函数。这是因为PyTorch的自动梯度功能负责大多数操作的计算梯度。

最明显的例外是

  1. 您的函数不能表示为其他可微函数的有限组合(例如,如果您需要不完全的伽马函数,您可能希望编写自己的前后向函数,其中使用numpy和/或查找表)。
  2. 您希望加快计算一个特别复杂的表达式,在应用链式规则之后,梯度可以大大简化。
票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57627406

复制
相关文章

相似问题

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