2

私は、22入力と1出力(1または0のいずれか)のフィードフォワード逆伝搬ANNを設計しています。 NNは3つの層を持ち、10個の隠れたニューロンを使用しています。 NNを実行すると、重みがわずかに変更され、出力の合計誤差は約40%になります。私はそれが過大であると思っていましたが、隠れたニューロンの数を変更しても何も変わりませんでした。フィードフォワード逆伝搬の重みは変化しません

N Mが隠れニューロンの数(10)であり、入力数(22)

ある

これは、出力が計算されるIは

OINをbackpropagateするために使用しているコードでありますシグモイド関数の中に入れる前

ooutはシグモイド関数を通過後の出力がある

double odelta = sigmoidDerivative(oin) * (TARGET_VALUE1[i] - oout); 
    double dobias = 0.0; 
    double doweight[] = new double[m]; 

    for(int j = 0; j < m; j++) 
    { 
     doweight[j] = (ALPHA * odelta * hout[j]) + (MU * (oweight[j] - oweight2[j])); 
     oweight2[j] = oweight[j]; 
     oweight[j] += doweight[j]; 
    } // j 

    dobias = (ALPHA * odelta) + (MU * (obias - obias2)); 
    obias2 = obias; 
    obias += dobias; 

    updateHidden(N, m, odelta); 

これは、隠されたニューロンを変更するために使用しているコードです。

+0

体重をどのように初期化しますか?より多くのコードを提供できますか?ネットワークを更新して初期化する方法は? –

+0

私は-1と1の間の重みを無作為化して初期化します – AZstudentCS

答えて

1

1つのノードで2つのクラスを出力するようにネットワークを学習しています。このネットワークに接続されているウェイトは、あるクラスを予測し、次に別のクラスを予測するように適応しています。あなたのウェイトがあなたのデータの支配的なクラスに適合するように、ほとんどの場合、この問題が発生するのを避けるために、出力に2つのノードを持つ別のノードを追加し、それぞれが1つのクラスを参照します。

+0

どうすればそれをやりますか?私はちょうどANNを学んでいるだけで、私はあなたの答えを理解しているとは思っていません。 2つのクラスはどういう意味ですか? – AZstudentCS

関連する問題