• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:バックプロパゲーションの中間層を増やしたいのですが)

バックプロパゲーションの中間層を増やす方法

このQ&Aのポイント
  • C++でバックプロパゲーションを学習しています。入力層2、中間層2、出力1のものは作成できましたが、中間層が100個になったものが作成できません。どなたか教えてください。
  • バックプロパゲーションの中間層を増やす方法を教えてください。
  • C++でバックプロパゲーションの中間層を増やす際に問題が発生しています。どなたか解決策を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

 こんにちは。  補足コメントを読みました。  部屋の中に転がっている雑誌をたまたま拾い上げてみたら、Cマガジン1996年6月号(ソフトバンク)を発見したわけですが、このときの巻頭特集は、「逆伝搬型ニューラルネット」でした。  C言語で手書き数字の認識について説明がありました。  それよりも入手性が良さそうな入門書としては、今となっては刊行時期が遙か昔ですが、 >入門と実習 >ニューロコンピュータ >監修 中野 馨 >編 飯沼一元 >ニューロンネットグループ >著 桐谷 滋 >技術評論社 >ISBN4-87408-308-0 定価2500円 >入門と実習 ニューロコンピュータ [単行本] >http://www.amazon.co.jp/s/ref=nb_sb_noss_1?__mk_ja_JP=%83J%83%5E%83J%83i&url=search-alias%3Daps&field-keywords=%83j%83%85%81%5B%83%8D%83R%83%93%83s%83%85%81%5B%83%5E&x=15&y=17 >中古品の出品:15¥ 85より  安いのはいいけど、ちょっとショック。  ここまで打ち込んでみてからソースコードを確認してみたら古すぎました。  C/C++での2次元配列の取り扱い方法は以下を参考にお願いします。 >2次元配列の特徴と注意点 >http://mkubara.com/index.php/2%E6%AC%A1%E5%85%83%E9%85%8D%E5%88%97%E3%81%AE%E7%89%B9%E5%BE%B4%E3%81%A8%E6%B3%A8%E6%84%8F%E7%82%B9  質問として掲載されている演算部分の式では重み付けを表していると思われる2次元配列の引数の与え方の変化はよく見ると規則性がありますよね?  この規則性を応用すれば良さそうです。  1個だけ考えてみると、 >w[1][1] = w[1][1] + ita * ( ha1 * ( 1 - ha1 ) * ( w[2][1] * D ) * x1 );  w[i][j] = w[i][j] + ita * ( ha1 * ( 1 - ha1 ) * ( w[i+1][j] * D) * x1 );  それぞれの変数、iとjは1から始まると考えるとして、for文を2個組み合わせることになると思います。  本職の方に意見するような話は気が引けるのでここの辺までにしておきます。

bmp560
質問者

お礼

親切にありがとうございました。とても参考になりました。本当にありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.1

 こんばんは。  自分自身ではプログラムを組みませんのでネットで拾ってきた情報です。  検索したらこういったページが見つかりました。 >ニューラルネットワーク >http://www.sist.ac.jp/~suganuma/kougi/other_lecture/SE/net/net.htm  ページの中で紹介されている「プログラム」をクリックすると次のページが表示されます。 >http://www.sist.ac.jp/~suganuma/cpp/3-bu/18-sho/backpr/C++/back.txt >h1 = ( x1 * w[1][1] ) + ( x2 * w[1][3] ) - theta;  2次元配列の引数が固定になっているのでこれを変数にしてfor文でも使ってループ処理をしてあげれば記述できそうな気がします。  あと、【中間層が100個】というのはどういった意図ですか?

bmp560
質問者

補足

回答ありがとうございます。 今私は、論文の追試をしています。論文の中で使われているネットワークが中間層100個なのでどうしたらできるか判らなくて投稿しました。 具体的にどのように書けばいいか教えてもらえると幸いです。

すると、全ての回答が全文表示されます。

関連するQ&A