アーキテクチャを持つニューラル ネットワークがあります1024, 512, 256, 1
(入力層には1024
ユニットがあり、出力層には1
ユニットがあります)。の最適化アルゴリズムの 1 つを使用して、このネットワークをトレーニングしたいと考えていますscipy.optimize
。
問題は、これらのアルゴリズムが関数パラメーターが 1 つのベクトルで与えられることを想定していることです。これは、私の場合、長さのベクトルですべての重みを展開する必要があることを意味します
1024*512 + 512*256 + 256*1 = 655616
一部のアルゴリズム ( などfmin_bfgs
) は恒等行列を使用する必要があるため、次のような呼び出しを行います。
I = numpy.eye(655616)
驚くことではありませんが、これにより が生成されMemoryError
ます。scipy.optimize
自分のニーズにアルゴリズムを適応させる以外に、すべての重みを 1 つのベクトルに展開する必要を回避する方法はありますか?