コスト関数を持ち、バックプロパゲーションによってその勾配を決定するニューラル ネットワーク オブジェクトを Python で作成しました。ここにはたくさんの最適化関数がありますが、それらを実装する方法がわかりません。また、学習するサンプルコードを見つけるのに苦労しています。
明らかに、変更しようとしているパラメーター、最小化しようとしているコスト関数、および backprop によって計算された勾配を何らかの方法で伝える必要があります。たとえば、fmin_cg に何が何であるかを伝えるにはどうすればよいでしょうか。
おまけの質問: さまざまなアルゴリズムの使用方法の違いについてどこで学べますか?
===== OK、アップデート =====
これは私が持っているものです:
def train(self, x, y_vals, iters = 400):
t0 = concatenate((self.hid_t.reshape(-1), self.out_t.reshape(-1)), 1)
self.forward_prop(x, t0)
c = lambda v: self.cost(x, y_vals, v)
g = lambda v: self.back_prop(y_vals, v)
t_best = fmin_cg(c, t0, g, disp=True, maxiter=iters)
self.hid_t = reshape(t_best[:,:(hid_n * (in_n+1))], (hid_n, in_n+1))
self.out_t = reshape(t_best[:,(hid_n * (in_n+1)):], (out_n, hid_n+1))
そして、これはそれがスローしているエラーです:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "netset.py", line 27, in <module>
net.train(x,y)
File "neuralnet.py", line 60, in train
t_best = fmin_cg(c, t0, g, disp=True, maxiter=iters)
File "/usr/local/lib/python2.7/dist-packages/scipy/optimize/optimize.py", line 952, in fmin_cg
res = _minimize_cg(f, x0, args, fprime, callback=callback, **opts)
File "/usr/local/lib/python2.7/dist-packages/scipy/optimize/optimize.py", line 1017, in _minimize_cg
deltak = numpy.dot(gfk, gfk)
ValueError: matrices are not aligned
……半!