我训练了一个SVR模型,该模型必须基于5维输入来预测输出值。然后,我想在优化问题中使用该模型,并使用回归函数的梯度来提高优化搜索性能。我正在使用scikit-learn库和nu-SVR(带有RBF内核)算法。
下面是我编写的代码。但是,当我使用scipy check_grad函数检查梯度值时,差异很大。
问题是:我可以相信check_grad函数吗?如果是,我的代码有什么错误?在此先感谢您的帮助。 (如果需要其他信息,请告诉我。)
def gradientPrediction(x):
x_scaled = = (x-pickled_minVal)/pickled_diff
query_point = x_scaled
x_mat = np.matlib.repmat(query_point,len(pickled_model.support_),1).transpose()
SVs = pickled_model.support_vectors_.transpose()
sub_x = x_mat-SVs
A = pickled_model.dual_coef_
term = -pickled_model.gamma*A
term = 2*term
exp_term = np.matlib.repmat(np.exp(pickled_model.gamma*np.sum(sub_x*sub_x,axis=0)),SVs.shape[0],1)*sub_x
exp_term = exp_term.transpose()
grad = term.dot(exp_term)
return (grad)