gpt4 book ai didi

sympy - 如何在 sympy 中优化 hessian 的评估?

转载 作者:行者123 更新时间:2023-12-05 04:17:40 26 4
gpt4 key购买 nike

我正在为通用似然模型使用 statsmodels 库。由于我有一个相当复杂的似然函数,我使用 sympy 为我计算梯度和 hessian。这工作正常,但对我的需要来说太慢了,因为似然函数包含项 b0*x0 + b1*x1 + ... + bn*xn。这样,hessian 大小会增加 N^2,复杂性也会增加。

hessian 的元素通常非常相似,如 expensive_operation * x0expensive_operation * x1 等。这意味着如果我可以预先计算 expensive_operation 并在 hessian 函数中使用它,我会大大提高性能。

所以问题是 - 是否有一种工具可以获取函数列表、优化它们然后有效地评估它们?像 numexpr 这样的函数列表?

最佳答案

SymPy 有cse,代表公共(public)子表达式消除。参见 the docs .

一个简单的例子:

>>> print(cse(sin(x**2)*cos(x**2) + 2*sin(x**2) - cos(x**2)))
([(x0, x**2), (x1, sin(x0)), (x2, cos(x0))], [x1*x2 + 2*x1 - x2])

关于sympy - 如何在 sympy 中优化 hessian 的评估?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21209443/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com