使用sympy提取返回标量的函数的jacobian wrt符号矩阵

问题描述 投票:0回答:1

我正在尝试对矩阵采用标量函数的雅可比式

w = sym.MatrixSymbol('w',2,1)
g = sym.Matrix([sym.log(1 + sym.exp(sym.MatMul(w.T,w)))])
grad_g = g.jacobian(w)

这将返回错误的[0,0]的雅可比向量。

我在这里尝试了非符号实现:

w1, w2 = sym.symbols('w_1, w_2')
w = sym.Matrix([w1, w2])
g = sym.Matrix([sym.log(sym.Matrix([1]) + sym.exp(w.T * w))])
grad_g = g.jacobian(w)

我收到一条错误消息:NotImplementedError:,包含0个进一步的信息。

将竭诚为您服务!

python sympy calculus
1个回答
0
投票

将其作为非象征性案例:

w1, w2 = sym.symbols('w_1 w_2')
w = sym.Matrix([w1, w2])
g = sym.log(1 + sym.exp(w.T * w)[0])
grad_g = sym.Matrix([g]).jacobian(w)

必须通过sym.exp索引到矩阵返回中,而不是将1设为矩阵。

我很想知道是否可以用sym.MatrixSymbol做到这一点,所以让我知道

© www.soinside.com 2019 - 2024. All rights reserved.