私は、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);
これは、隠されたニューロンを変更するために使用しているコードです。
体重をどのように初期化しますか?より多くのコードを提供できますか?ネットワークを更新して初期化する方法は? –
私は-1と1の間の重みを無作為化して初期化します – AZstudentCS