DNNをC#で一から構築して動作を見てみよう
Python + Keras などが一般的ですが、ここでは理論の理解のため、使い慣れたVisualStudio2022とC# で一から作ってみました。
nnet_test1 [Visual Studio 2022, C#]
もっともシンプルな全結合モデル。左上の4マスの値を入力。マス目の黒が横・縦・斜め、または均一の4パターンを学習判別させます。
- マス目はグレースケール(255段階)
- 各マスの値(0-255)をfloat(0-0.9999)に変換して、入力層に
- 入力層から中間層に(繋がりの重みが負なら緑、正なら赤)
- 中間層から出力層に(水平:horizon, 垂直:vertical, 斜め:cross, 均一:solid)
- 誤差逆伝播法により繋がりの重みを修正
マス目も4マスですが、他に9マス(3x3)もあります。
中間層は15個ですが、他に50個、100個のパターンもあります。さらに中間層を追加した9 x 50 x 50 x 6というパターンもあります。
ノイズを持った教師ありデータを動的に生成。10,000回の学習。10回それを繰り返すとほぼほぼ正解に至ります。