获取Pytorch autograd用于计算渐变的精确公式

获取Pytorch autograd用于计算渐变的精确公式,pytorch,backpropagation,autograd,Pytorch,Backpropagation,Autograd,我正在实现一个自定义CNN,其中包含一些自定义模块。我只实现了自定义模块的前向传递,并将其后向传递留给autograd。 我已经通过自定义模块的参数手动计算了反向传播的正确公式,我希望查看它们是否与autograd内部用于计算梯度的公式相匹配。 有没有办法看到这一点? 谢谢 编辑(添加测试用例):- 我有一个复仿射层,其中权重和输入是复值矩阵,运算是权重和输入矩阵的矩阵乘法。 两个复数的乘法由下式给出- (a+ib)(c+id)=(ac-bd)+i(ad+bc) 我计算了这个层的反向传播公式,因

我正在实现一个自定义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)


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

我不相信Pytork中有这样的功能,即使它很难阅读。你能做的是用你推导的公式为你的图层实现一个自定义方法,然后通过设计知道反向传播是你想要的。

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

使用的测试用例适合你吗?我的答案有什么反馈吗?请检查使用测试用例是否适合您?对我的答案有何反馈?请查收