ニューラルネット三層パーセプトロンとバックプロパゲーションを書いてみました。 ソースコード使い方次のようなファイルを用意します。
「学習用教師信号ペア」はタブ区切りで、 左側が入力、 右側が教師信号となります。 この例では二つの入力値とこれらを加算した教師信号を与えています。 用意したファイルと学習回数を指定することで学習した結果から求められた重みを表示します。 $ ./backprop.exe sample1.txt 10000 0 1.49431766 100 0.20020450 200 0.03483757 300 0.03075086 ...(中略)... 9700 0.00682071 9800 0.00668986 9900 0.00656358 0.4000, 0.2000 0.59 0.60 0.3000, 0.4000 0.71 0.70 0.8000, 0.1000 0.90 0.90 0.0000, 0.0000 0.05 0.00 0.1000, 0.7000 0.82 0.80 0.1000, 0.2000 0.30 0.30 0.5000, 0.5000 0.96 1.00 0.6000, 0.2000 0.81 0.80 0.2000, 0.8000 0.96 1.00 0.1000, 0.1000 0.18 0.20 0.5000, 0.1000 0.58 0.2000, 0.4000 0.60 0.1000, 0.4000 0.51 Ratio=0.00644290 Coefficient=0.10000000 Count=10000 Sample=10 Input=2 Middle=2 Output=1 InputHidden0=4.53664823,4.72331539,-0.38736734 InputHidden1=4.54551141,6.23121365,-0.19124129 InputHidden2=-5.08500849,-0.00080723,-0.48722716 HiddenOutput0=9.36753343 HiddenOutput1=5.63620394 HiddenOutput2=-5.85611725 計算から得られた重みを利用する場合、 表示された重みをファイルに追加し、
学習回数に0を指定して実行することで、 学習によって得られた結果を利用出来ます。 $ ./backprop.exe sample2.txt 0
0.4000, 0.2000 0.59 0.60
0.3000, 0.4000 0.71 0.70
0.8000, 0.1000 0.90 0.90
0.0000, 0.0000 0.05 0.00
0.1000, 0.7000 0.82 0.80
0.1000, 0.2000 0.30 0.30
0.5000, 0.5000 0.96 1.00
0.6000, 0.2000 0.81 0.80
0.2000, 0.8000 0.96 1.00
0.1000, 0.1000 0.18 0.20
0.5000, 0.1000 0.58
0.2000, 0.4000 0.60
0.1000, 0.4000 0.51
Ratio=0.00000000
Coefficient=0.10000000
Count=0
Sample=10
Input=2
Middle=2
Output=1
InputHidden0=4.53664823,4.72331539,-0.38736734
InputHidden1=4.54551141,6.23121365,-0.19124129
InputHidden2=-5.08500849,-0.00080723,-0.48722716
HiddenOutput0=9.36753343
HiddenOutput1=5.63620394
HiddenOutput2=-5.85611725
|