我正在寻求通过奇异值分解来反向传播渐变以用于正则化目的 . PyTorch目前不支持通过奇异值分解进行反向传播 .
我知道我可以编写自己的自定义函数来操作变量;获取其.data张量,将torch.svd应用于它,将变量包围在其奇异值周围并在前向传递中返回,并在向后传递中将适当的雅可比矩阵应用于传入渐变 .
但是,我想知道是否有一个更优雅(并且可能更快)的解决方案,我可以覆盖“类型变量没有实现无状态方法svd”错误直接,调用Lapack等?
如果有人可以指导我完成我需要查看的相应步骤和源文件,我将非常感激 . 我认为这些步骤同样适用于当前没有相关后向方法的其他线性代数运算 .
非常感谢
1 回答
带有前进和后退传递的
torch.svd
现在可在Pytorch主站中使用:http://pytorch.org/docs/master/torch.html#torch.svd
您需要从源代码安装Pytorch:https://github.com/pytorch/pytorch/#from-source