記事"パーセプトロンニューラルネットワーク"についてのディスカッション - ページ 8

 

こんにちは、ドミトリー、

数週間前から、あなたの「ニューラルネットワーク」シリーズの最初の2つのパートに取り組んでいます。

私の見解では、これは常に最後の要素を省いてしまいます。Total()関数は カウントを返すべきで、それから1つ取り除いて、forループで"<"を使う。つまり、Total()のカウントが2の場合、forループは1回しか実行されないことになります。

私は何を見逃しているのでしょうか?

よろしくお願いします、

デルフ


   int total=Layer.Total()-1;
   for(int n=0; n<total; n++)
     {
      CNeuron *neuron=Layer.At(n);
      resultVals.Add(neuron.getOutputVal());
     }
 

のようなコードを書いたとします:

int total=Layer.Total()-1;
   for(int n=0; n<total; n++)
     {
      CNeuron *neuron=Layer.At(n);
      resultVals.Add(neuron.getOutputVal());
     }
  }

しかし、レイヤーの中に20個のニューロンがあると仮定して、total変数に19を代入した[int total=Layer.Total()-1] ので、totalは19に等しくなり、インデックス0-18(total=19)のニューロンを繰り返し処理しても、インデックス19(最後のニューロン)に到達しない:

int total=Layer.Total();
   for(int n=0; n<=total; n++)
     {
      CNeuron *neuron=Layer.At(n);
      resultVals.Add(neuron.getOutputVal());
     }
  }

または

int total=Layer.Total()-1;
   for(int n=0; n<= total; n++)
     {
      CNeuron *neuron=Layer.At(n);
      resultVals.Add(neuron.getOutputVal());
     }
  }

でコードを変更しなければならないと思います。

どう思いますか?

 
Hedayat Yazdani:

コードの一部に、次のような記述がある:

しかし、レイヤーに20のニューロンがあると仮定し、total変数に19を代入した[int total=Layer.Total()-1] ので、totalは19に等しくなり、インデックス0-18(total=19)のニューロンを反復しても、インデックス19(最後のニューロン)に到達しない:

または

でコードを変更しなければならないと思う。

あなたの考えは?

各レイヤーで、ベイジアンシフトのためにニューロンを1つ追加する。つまり、20個のニューロンでレイヤーを作成する関数を 呼び出すと、21個のニューロンを作成することになる。そしてLayer.Total()は21を返す。しかし入力データは20要素しかない。最後のベイジアンニューロンは常に'1'を出力する。そこでLayer.Total()-1を使っている。ループの中で"<"を使っているのは、配列の最初の要素のインデックスが'0'だからだ。

 
エキスパートアドバイザー、インジケーター、スクリプトを作成できますか?
 
MetaQuotes:

新しい記事 Neural Networks Made Easy を公開しました:

文:ドミトリー・ギズリク

こんにちは、初めてニューラルネットワークを学びます。あなたの記事は私にとても適していますが、なぜ-1が多くの場所で必要なのか知りたいです。() - 1のように、次の層のニューロン数と一致しない。

 
Ping You Jiang #:

こんにちは、初めてニューラルネットワークを学びます、あなたの記事は私に非常に適しています、しかし、私はなぜ-1が次のような多くの場所で必要なのか知りたい:nextLayer.() - 1のように、次の層のニューロン数と一致しないのです。

nextLayer.Total()はニューロンの総数を返します。 ですから、もし10に戻るなら、それは次のことを意味します配列の要素は0から9までのインデックスを持っています。

 

実際、ファイルをダウンロードするとコンパイルエラーが出る。

ニューロネット

 
Muhammad Saleem #: 実際にファイルをダウンロードするとコンパイルエラーが出ます。

GetPointer関数を使ってみてください。

 
Dmitriy Gizlyk #: GetPointer関数を使ってみてください。

ドミトリーさん、こんにちは。このエラーはどのように修正できるのでしょうか?

 
Muhammad Saleem #: ファイルをダウンロードするとコンパイルエラーが出るんだ。

このエラーは直りましたか?