DNNをC#で一から構築して動作を見てみよう

C# AI

Python + Keras などが一般的ですが、ここでは理論の理解のため、使い慣れたVisualStudio2022とC# で一から作ってみました。

nnet_test1 [Visual Studio 2022, C#]

もっともシンプルな全結合モデル。左上の4マスの値を入力。マス目の黒が横・縦・斜め、または均一の4パターンを学習判別させます。

nnet_test1

  1. マス目はグレースケール(255段階)
  2. 各マスの値(0-255)をfloat(0-0.9999)に変換して、入力層に
  3. 入力層から中間層に(繋がりの重みが負なら緑、正なら赤)
  4. 中間層から出力層に(水平:horizon, 垂直:vertical, 斜め:cross, 均一:solid)
  5. 誤差逆伝播法により繋がりの重みを修正

マス目も4マスですが、他に9マス(3x3)もあります。

中間層は15個ですが、他に50個、100個のパターンもあります。さらに中間層を追加した9 x 50 x 50 x 6というパターンもあります。

ノイズを持った教師ありデータを動的に生成。10,000回の学習。10回それを繰り返すとほぼほぼ正解に至ります。