【发布时间】:2017-12-03 09:47:30
【问题描述】:
我希望通过奇异值分解来反向传播梯度以进行正则化。 PyTorch 目前不支持通过奇异值分解进行反向传播。
我知道我可以编写自己的自定义函数来操作变量;获取它的 .data 张量,将 torch.svd 应用于它,将一个变量包裹在其奇异值周围并在前向传递中返回它,并在后向传递中将适当的雅可比矩阵应用于传入的梯度。
但是,我想知道是否有更优雅(并且可能更快)的解决方案,我可以直接覆盖“类型变量不实现无状态方法 svd”错误,调用 Lapack 等?
如果有人可以指导我完成我需要查看的适当步骤和源文件,我将不胜感激。我想这些步骤同样适用于目前没有关联反向方法的其他线性代数运算。
【问题讨论】:
标签: python linear-algebra pytorch