【发布时间】:2021-03-31 03:43:46
【问题描述】:
您好,我有以下功能:
sum from 1 to 5000 -log(1−(xi)^2) -log(1-(a_i)^t*x),其中 a_i 是一个随机向量,我们试图通过 Netwon 最小化这个函数的值方法。
我需要一种方法来计算关于 (x1, x2, x3, ...) 的 Hessian 矩阵。我尝试了自动渐变,但花了太多时间。这是我现在的时间。
from autograd import elementwise_grad as egrad
from autograd import jacobian
import autograd.numpy as np
x=np.zeros(5000);
a = np.random.rand(5000,5000)
def f (x):
sum = 0;
for i in range(5000):
sum += -np.log(1 - x[i]*x[i]) - np.log(1-np.dot(x,a[i]))
return sum;
df = egrad(f)
d2f = jacobian(egrad(df));
print(d2f(x));
我已尝试调查 sympy,但我对如何继续感到困惑。
【问题讨论】:
标签: python numpy sympy convex-optimization