ひとつ前に戻る

NNの「次の一手タスク」をSmallBasicで作る

重み情報の読み込みと出力

パイソンプログラムで2400個の棋譜から学習した結果(重み情報)があるので、
それを読み込むプログラムをまず作ります。
そして、インタラクティブに入力と出力するプログラムを作ります。
1 重み情報について こちらが重み情報となります。重み情報は二つあります。

入力層から隠れ層への重み情報は49行98列の行列となります。
隠れ層から出力層への重み情報は49行49列の行列となります。

これらはパイソンプログラムからテキストファイルに書き出しました。
2 重みを配列に取り込み 左図は重みを読み込むプログラムの一部です。

このようなプログラムで、

入力層から隠れ層への49行✖98列の重みをomomi1[行][列]に、
隠れ層から出力層への49行✖49列の重みをomomi2[行][列]に取り込みます。
3 入力データについて 入力は碁盤にマウスでクリックすることにより行います。
これでインタラクティブに入力することができます。

碁盤の石情報はtable[x][y]に入るようになっています。
(xは列、yは行を示します。)
なので、table[x][y]から98行の入力信号用配列nyuryoku[]に変換します。
なおnyuryoku[]は、最初の49行で黒の配置を次の49行で白の配置を示しています。
4 NNの出力計算 NN(ニューラルネットワーク)の出力計算は、
入力層から隠れ層への出力と隠れ層から出力層への出力の
2種類あります。

左は入力層から隠れ層への出力を計算するコードの一部です。

hは隠れ層のノードを示しています。
まずh=1つまり隠れ層の1番目のノードについて計算しています。
そして重み[1to1]*入力[1]+重み[2to1]*入力[2]+・・・+重み[98to1]*入力[98]
のように計算しています。

[1to1]の最初の1は入力層の1ノード目を示し、最後の1は隠れ層の1ノード目を示します。

最後にシグモイド関数を適用して隠れ層の結果が出ます。

これを隠れ層の各ノード(h=1 to 49)について行っています。

 これで重み情報の読み込みと入力情報の読み込み及びニューラルネットワークの出力ができるようになりました。

ひとつ前に戻る