首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取Pytorch autograd用于计算梯度的精确公式

获取Pytorch autograd用于计算梯度的精确公式
EN

Stack Overflow用户
提问于 2020-09-11 18:05:29
回答 1查看 50关注 0票数 1

我正在实现一个自定义CNN与它的一些自定义模块。我只实现了自定义模块的前向传递,并将它们的后向传递留给了autograd。我已经通过自定义模块的参数手动计算了反向传播的正确公式,我希望查看它们是否与autograd内部用于计算梯度的公式匹配。有没有办法看到这一点?谢谢

编辑(添加测试用例) :-

我有一个复数仿射层,其中权重和输入是复值矩阵,操作是权重和输入矩阵的矩阵乘法。两个复数的乘法由- (a+ib)(c+id) = (ac-bd)+i(ad+bc)给出。

我计算了这一层的反向传播公式,假设我们有来自更高层的传入梯度。公式为dL/dI(n) =(hermitian( W(n) .matmul(dL/dI(n+1)),其中I(n)和W(N)是第n层的输入和权重,I(n+1)是第(n+1)层的输入。

所以我想检查autograd是否也在使用我推导的相同公式来计算dL/dI(n)。

(由于Pytorch目前还不支持复值张量反向传播,我已经通过处理单独的实张量和虚张量创建了自己的复数表示)

EN

回答 1

Stack Overflow用户

发布于 2021-02-21 08:14:27

我不相信pytorch中有这样的功能,即使它是相当不可读的。您可以做的是使用您导出的公式为您的层实现一个自定义的backward方法,然后通过设计知道反向传播就是您想要的。

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

https://stackoverflow.com/questions/63844935

复制
相关文章

相似问题

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