我正试图编写一个代码来执行metropolized iid采样,但我在计算函数对numpyndarray
的二阶导数时遇到了问题。到目前为止,我编写的代码如下所示:
import numpy as np
from scipy.optimize import newton
w = np.array([4,5,3,6,2])
y = np.array([1,0,0,1,1])
lamb = np.array([0.001, 0.0045, 0.0072,0.0083, 0.0069)]
tau = np.array([0.0002, 0.00045, 0.000378, 0.00467, 0.00235])
# define function f
def f(gamma):
return (-1) * (np.dot(y, np.dot(w, gamma)) - np.sum(np.log(np.exp(np.dot(w,gamma)) + 1)) - np.sum((np.subtract(gamma,lamb)) * (np.subtract(gamma,lamb)) / (2*tau*tau)))
# mode for the metropolized iid sampler
gamma_hat = newton(f, gamma, fprime=None, args=(), tol=1.48e-08, maxiter=50, fprime2=None)
# not sure how to calculate the variance for the same sampler
我想做的是:
为了计算采样器的方差,我想取函数f
对向量变量gamma
的二阶导数,然后计算代入gamma = gamma_hat
后的二阶导数的值
我可以用python来做这个吗?如果需要,我愿意使用pytorch
来计算二阶导数的值
谢谢,
目前没有回答
相关问题 更多 >
编程相关推荐