アプリ版:「スタンプのみでお礼する」機能のリリースについて

C++でバックプロパゲーションを学習しています。入力層2、中間層2、出力1のものは、作れたのですが中間層が100個になったものが作れません。どなたか教えてください。

h1 = ( x1 * w[1][1] ) + ( x2 * w[1][3] ) - theta;
fh1 = 1 / ( 1 + exp( -1 * h1 ) );
h2 = ( x1 * w[1][2] ) + ( x2 * w[1][4] ) - theta;
fh2 = 1 / ( 1 + exp( -1 * h2 ) );
D = ( T - y ) * y * ( 1 - y );

w[2][1] = w[2][1] + ita * D * fa1;
w[2][2] = w[2][2] + ita * D * fa2;

w[1][1] = w[1][1] + ita * ( ha1 * ( 1 - ha1 ) * ( w[2][1] * D )
* x1 );
w[1][2] = w[1][2] + ita * ( ha2 * ( 1 - ha2 ) * ( w[2][2] * D )
* x1 );
w[1][3] = w[1][3] + ita * ( ha1 * ( 1 - ha1 ) * ( w[2][1] * D )
* x2 );
w[1][4] = w[1][4] + ita * ( ha2 * ( 1 - ha2 ) * ( w[2][2] * D )
* x2 );

A 回答 (2件)

 こんにちは。



 補足コメントを読みました。

 部屋の中に転がっている雑誌をたまたま拾い上げてみたら、Cマガジン1996年6月号(ソフトバンク)を発見したわけですが、このときの巻頭特集は、「逆伝搬型ニューラルネット」でした。
 C言語で手書き数字の認識について説明がありました。

 それよりも入手性が良さそうな入門書としては、今となっては刊行時期が遙か昔ですが、

>入門と実習
>ニューロコンピュータ
>監修 中野 馨
>編 飯沼一元
>ニューロンネットグループ
>著 桐谷 滋
>技術評論社
>ISBN4-87408-308-0 定価2500円


>入門と実習 ニューロコンピュータ [単行本]
http://www.amazon.co.jp/s/ref=nb_sb_noss_1?__mk_ …

>中古品の出品:15¥ 85より
 安いのはいいけど、ちょっとショック。

 ここまで打ち込んでみてからソースコードを確認してみたら古すぎました。

 C/C++での2次元配列の取り扱い方法は以下を参考にお願いします。

>2次元配列の特徴と注意点
http://mkubara.com/index.php/2%E6%AC%A1%E5%85%83 …

 質問として掲載されている演算部分の式では重み付けを表していると思われる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個組み合わせることになると思います。


 本職の方に意見するような話は気が引けるのでここの辺までにしておきます。
    • good
    • 0
この回答へのお礼

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

お礼日時:2012/07/14 15:38

 こんばんは。



 自分自身ではプログラムを組みませんのでネットで拾ってきた情報です。

 検索したらこういったページが見つかりました。

>ニューラルネットワーク
http://www.sist.ac.jp/~suganuma/kougi/other_lect …

 ページの中で紹介されている「プログラム」をクリックすると次のページが表示されます。

http://www.sist.ac.jp/~suganuma/cpp/3-bu/18-sho/ …

>h1 = ( x1 * w[1][1] ) + ( x2 * w[1][3] ) - theta;
 2次元配列の引数が固定になっているのでこれを変数にしてfor文でも使ってループ処理をしてあげれば記述できそうな気がします。

 あと、【中間層が100個】というのはどういった意図ですか?

この回答への補足

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

補足日時:2012/07/14 09:54
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!