我的问题与此类似。
我正在尝试在 Python 中实现(神经网络)成本函数,反向传播算法。
神经网络有 3 层。因此需要优化 2 个参数(Theta1 和 Theta2;在程序中描述为 T1 和 T2)。
我尝试了上面链接中提供的解决方案,但对我不起作用。
我的成本函数是用以下参数定义的。
def CostFunction(Thetas, X, y, Lambda = None):
T1 = Thetas[0]
T2 = Thetas[1]
if(Lambda == None):
Lambda = 0
m = X.shape[0]
# so on.......
return J, [Theta1_grad, Theta2_grad]
我将如何使用优化上述功能Scipy.optimize.fmin_bfgs
?
我有以下代码,似乎不起作用:
initial_values = np.zeros([0]))
myargs = (Thetas ,X, y)
def decorated_cost(Thetas):
return NeuralNetwork.CostFunction(Thetas, X, y, Lambda=1)
print scipy.optimize.fmin_bfgs(decorated_cost, Thetas , maxiter=400)
我需要优化 Theta1 和 Theta2 但 API 只需要 1 个参数作为输入。
此外,由于某种原因,上述代码(经过几次迭代)在优化函数操作时,成本函数的输入参数顺序似乎发生了变化。