ニューラルネット

三層パーセプトロンとバックプロパゲーションを書いてみました。

ソースコード

使い方

次のようなファイルを用意します。

  • sample1.txt
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    # 学習用教師信号ペア
    0.40,0.20	0.60
    0.30,0.40	0.70
    0.80,0.10	0.90
    0.00,0.00	0.00
    0.10,0.70	0.80
    0.10,0.20	0.30
    0.50,0.50	1.00
    0.60,0.20	0.80
    0.20,0.80	1.00
    0.10,0.10	0.20
    # 評価用入力値
    *0.50,0.10
    *0.20,0.40
    *0.10,0.40
    

「学習用教師信号ペア」はタブ区切りで、 左側が入力、 右側が教師信号となります。 この例では二つの入力値とこれらを加算した教師信号を与えています。

用意したファイルと学習回数を指定することで学習した結果から求められた重みを表示します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
$ ./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

計算から得られた重みを利用する場合、 表示された重みをファイルに追加し、

  • sample2.txt
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    
    # 重みの読み込み
    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.40,0.20	0.60
    0.30,0.40	0.70
    0.80,0.10	0.90
    0.00,0.00	0.00
    0.10,0.70	0.80
    0.10,0.20	0.30
    0.50,0.50	1.00
    0.60,0.20	0.80
    0.20,0.80	1.00
    0.10,0.10	0.20
    # 評価用入力値
    *0.50,0.10
    *0.20,0.40
    *0.10,0.40
    

学習回数に0を指定して実行することで、 学習によって得られた結果を利用出来ます。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
$ ./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

添付ファイル: fileneuralnet.zip 1662件 [詳細]

Last-modified: 2010-03-26 (金) 15:22:19 (5560d)