def deriveKernel(self, params, i):
self.checkParamsI(params, i)
c = np.exp(params[-1])
#K = self.kernel.getTrainKernel(params[:-1])
#deriv1 = self.polyDegree * (c+K)**(self.polyDegree-1)
K = self.kernel.getTrainKernel(params[:-1]) + c
if (self.polyDegree==2): Kpower=K
else:
Kpower=K**2
for i in xrange(self.polyDegree-3): Kpower*=K #this is faster than direct power
deriv1 = self.polyDegree * Kpower
if (i==params.shape[0]-1): K_deriv = deriv1*c
else: K_deriv = deriv1 * self.kernel.deriveKernel(params[:-1], i)
return K_deriv
评论列表
文章目录