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 );
No.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個組み合わせることになると思います。
本職の方に意見するような話は気が引けるのでここの辺までにしておきます。
No.1
- 回答日時:
こんばんは。
自分自身ではプログラムを組みませんのでネットで拾ってきた情報です。
検索したらこういったページが見つかりました。
>ニューラルネットワーク
>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個なのでどうしたらできるか判らなくて投稿しました。
具体的にどのように書けばいいか教えてもらえると幸いです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・ことしの初夢、何だった?
- ・【お題】大変な警告
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・【お題】逆襲の桃太郎
- ・自分独自の健康法はある?
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
配列数式の解除
-
ListViewで、非表示列って作れ...
-
subの配列引数をoptionalで使う...
-
特定のセル範囲で4文字以上入力...
-
《エクセル2000》A列・B列の商...
-
2つ以上の変数を比較して最大数...
-
エクセルで最小値から0を除く方法
-
VB6 配列を初期化したい
-
Excel-VBAの配列「Public Const...
-
VBA 1次元配列を2次元に追加する
-
OutlookVBAでサブフォルダ一括作成
-
ヤマ括弧でくくられたテキスト...
-
【VBA】配列とWorksheetFunctio...
-
2次元動的配列の第一引数のみを...
-
VBのFunctionで、配列を引数...
-
配列変数の添字が範囲外ですと...
-
VBAで多次元配列のインデックス...
-
VBAで近似曲線の係数取得
-
s-functionについて質問です。...
-
for each の現在の配列ポインタ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
配列数式の解除
-
2つ以上の変数を比較して最大数...
-
配列変数の添字が範囲外ですと...
-
VB6 配列を初期化したい
-
VBA 1次元配列を2次元に追加する
-
ListViewで、非表示列って作れ...
-
2次元動的配列の第一引数のみを...
-
for each の現在の配列ポインタ...
-
特定のセル範囲で4文字以上入力...
-
subの配列引数をoptionalで使う...
-
配列を任意の数値で埋める方法
-
VBのFunctionで、配列を引数...
-
verilogで配列の任意の8bitを取...
-
Excel-VBAの配列「Public Const...
-
配列に同じ値を入れる方法
-
VBAで近似曲線の係数取得
-
linest関数に配列を渡す
-
Excel VBA配列をFunctionに渡す
-
MATLABにて場合分け関数を定義...
-
シェルスクリプト中で、ヒアド...
おすすめ情報