たとえば、y = x関数の重みを考え出すことができる単純なニューラルネットワークを作成しようとしています. これが私のコードです: http://codepad.org/rPdZ7fOz
ご覧のとおり、エラー レベルは実際にはそれほど低下しません。運動量と学習率を変更してみましたが、あまり役に立ちませんでした。私の入力、非表示、および出力の数は、私がやりたいことに対して正しいですか? そうでない場合、それは何ですか?もしそうなら、他に何が間違っている可能性がありますか?
たとえば、y = x関数の重みを考え出すことができる単純なニューラルネットワークを作成しようとしています. これが私のコードです: http://codepad.org/rPdZ7fOz
ご覧のとおり、エラー レベルは実際にはそれほど低下しません。運動量と学習率を変更してみましたが、あまり役に立ちませんでした。私の入力、非表示、および出力の数は、私がやりたいことに対して正しいですか? そうでない場合、それは何ですか?もしそうなら、他に何が間違っている可能性がありますか?
1,2,3,4
私が理解している限り、ネットワークをトレーニングして出力値を提供しようとしています。ただし、出力ではmath.tanh(..)
値が常に -1 から 1 の間のシグモイド ( ) を使用します。
そのため、ニューラル ネットワークの出力は常に -1 と 1 の間にあるため、その範囲外の出力値を当てはめようとすると、常に大きなエラーが発生します。
(入力値と出力値を 0.1 でスケーリングすると、トレーニングがうまく進んでいるように見え、最後に次のようになることを確認しました。
error 0.00025
)
使用しているニューラル ネットワークは、分類を行う場合に役立ちます(たとえば、NN 出力が < 0 の場合はデータ ポイントをクラス A に割り当て、> 0 の場合は B に割り当てます)。あなたがやりたいことは回帰(実数値関数に適合)であるように見えます。
出力ノードでシグモイドを削除できますが、これを考慮してバックプロパゲーション手順を少し変更する必要があります。