Jacobian matrix & hassian matrix

1. Jacobian matrix

f ( x ) = [ f 1 = x 1 2 + 2 x 2 f 2 = 3 x 1 + 4 x 2 2 ] , J = [ ∂ f 1 ∂ x 1 ∂ f 1 ∂ x 2 ∂ f 2 ∂ x 1 ∂ f 2 ∂ x 2 ] = [ 2 x 1 2 3 8 x 2 ] \begin{equation} f(x)=\begin{bmatrix} f_1=x_1^2+2x_2\\\\f_2=3x_1+4x_2^2\end{bmatrix}, J=\begin{bmatrix} \frac{\partial f_1}{\partial x_1}&\frac{\partial f_1}{\partial x_2}\\\\ \frac{\partial f_2}{\partial x_1}&\frac{\partial f_2}{\partial x_2} \end{bmatrix}=\begin{bmatrix} 2x_1&2\\\\3&8x_2\end{bmatrix} \end{equation} f(x)= f1=x12+2x2f2=3x1+4x22 ,J= x1f1x1f2x2f1x2f2 = 2x1328x2

  • 我们假设 x 1 = 1 , x 2 = 2 x_1=1,x_2=2 x1=1,x2=2,可得Jacobian matrix 表示如下:
    J = [ 2 x 1 2 3 8 x 2 ] = [ 2 2 3 16 ] \begin{equation} J=\begin{bmatrix} 2x_1&2\\\\3&8x_2\end{bmatrix}=\begin{bmatrix} 2&2\\\\3&16\end{bmatrix} \end{equation} J= 2x1328x2 = 23216
  • 引用 pytorch 进行代码验证
import torch


# define f(x)
def f(x):
    return torch.stack([x[0] ** 2 + 2 * x[1], 3 * x[0] + 4 * x[1] ** 2])


x = torch.tensor([1.0, 2.0], dtype=torch.float, requires_grad=True)

jacobian_matrix = torch.autograd.functional.jacobian(f, x)
print(f"jacobian_matrix=\n{jacobian_matrix}")
  • 运行结果:
jacobian_matrix=
tensor([[ 2.,  2.],
        [ 3., 16.]])

2. hassian matrix

二阶偏导。待续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值