python - 使用 sympy 获取返回标量的函数的 jacobian wrt 符号矩阵
问题描述
我正在尝试对矩阵取标量函数的雅可比
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 更多信息。
会喜欢任何和所有的帮助!
解决方案
想通了非符号案例:
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 做到这一点,所以让我知道
推荐阅读
- react-admin - 为多个 api 请求重写 Dataprovider 破坏了它,现在返回错误“无法读取未定义的属性 'hasOwnProperty'”
- python - 为什么我在 Keras 中得到负的 false_negative 计数(例如 -10)?
- c# - 将多个 rdlc 合并到单个 reportviewer 控件中
- django - 如何防止未登录的用户查看 context_processor
- c# - 如何在不使用 C# 中的单击事件(按钮)的情况下计算总数?
- mysql - 外键和 belongsTo 方法有问题
- mysql - 找出与重复行平均值的差异
- curl - 在 RESTful 路由中触发 Celery 任务
- php - PHP-将数据库结果放入数组并附加一个变量
- java - 是否可以在 Gradle、Android 项目中使用 ApiFuture?