文档不包括任何梯度检查的示例用例,它在哪里有用?
发布于 2019-08-23 10: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的自动梯度功能负责大多数操作的计算梯度。
最明显的例外是
https://stackoverflow.com/questions/57627406
复制