def gradient_logpdf(self, x, stepsize=None):
"""Return the gradient of log density of the joint prior at x.
Parameters
----------
x : float or np.ndarray
stepsize : float or list
Stepsize or stepsizes for the dimensions
"""
x = np.asanyarray(x)
ndim = x.ndim
x = x.reshape((-1, self.dim))
grads = np.zeros_like(x)
for i in range(len(grads)):
xi = x[i]
grads[i] = numgrad(self.logpdf, xi, h=stepsize)
grads[np.isinf(grads)] = 0
grads[np.isnan(grads)] = 0
if ndim == 0 or (ndim == 1 and self.dim > 1):
grads = grads[0]
return grads
评论列表
文章目录