使用python求解向量值函數的雅各比(Jacobian)矩陣


  考慮一個向量值函數$R^m \rightarrow R^n$,即$\textbf{y} = f(\textbf{x})$,它的雅各比(Jacobian)矩陣定義如下。

  

  下面記錄下一段使用python求向量值函數Jacobian矩陣的代碼,只有向量值函數可用,如果為標量函數則會報錯。

import torch

# 定義函數
x = torch.tensor([1, 3, 5.], requires_grad=True)
A = torch.tensor([[1., 0, 1], [0, 1, 0], [1, 0, 1]])
y = A@x


Weight = torch.eye(y.size()[0])
B = torch.tensor([])
for i, weight in enumerate(Weight):
    B = torch.cat((B, torch.autograd.grad(y, x, grad_outputs=weight, retain_graph=True)[0]), 0) 
print(B.view((y.size()[0], -1)))

  這里我們以$x=[1,3,5]^T, y=Ax$為例,輸出結果如下:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM