2

たとえば、y = x関数の重みを考え出すことができる単純なニューラルネットワークを作成しようとしています. これが私のコードです: http://codepad.org/rPdZ7fOz

ご覧のとおり、エラー レベルは実際にはそれほど低下しません。運動量と学習率を変更してみましたが、あまり役に立ちませんでした。私の入力、非表示、および出力の数は、私がやりたいことに対して正しいですか? そうでない場合、それは何ですか?もしそうなら、他に何が間違っている可能性がありますか?

4

1 に答える 1

2

1,2,3,4私が理解している限り、ネットワークをトレーニングして出力値を提供しようとしています。ただし、出力ではmath.tanh(..)値が常に -1 から 1 の間のシグモイド ( ) を使用します。

そのため、ニューラル ネットワークの出力は常に -1 と 1 の間にあるため、その範囲外の出力値を当てはめようとすると、常に大きなエラーが発生します。

(入力値と出力値を 0.1 でスケーリングすると、トレーニングがうまく進んでいるように見え、最後に次のようになることを確認しました。

error 0.00025

)

使用しているニューラル ネットワークは、分類を行う場合に役立ちます(たとえば、NN 出力が < 0 の場合はデータ ポイントをクラス A に割り当て、> 0 の場合は B に割り当てます)。あなたがやりたいことは回帰(実数値関数に適合)であるように見えます。

出力ノードでシグモイドを削除できますが、これを考慮してバックプロパゲーション手順を少し変更する必要があります。

于 2010-09-05T15:41:16.490 に答える