こちらは、.NET MAUI ベースの機械学習体験アプリです。 GUIベースで手軽にネットワーク構成を試すことができます。
詳しくは こちらのブログ記事 をご覧ください。
- Windows 11 Home
- Visual Studio 2026
ChatGPT によれば git clone して、Visual Studio で開くことによって、 必要なライブラリがインストールされるようです。 なお MAUI ベースのため、macOS でも使用できることを想定しています。 その場合は、libtorch-cpu-win-x64 といった Windows 向けのパッケージを、 macOS 向けのものに変更していただくと使えると思います(未検証です)。
アプリを開いていただいたあと、一般に次の手順で進めていただくとやりやすいと思います。
「使用するデータセット」から使用するデータセットを選択してください。 現時点では
- MNIST
- CIFAR-10
- FashionMNIST
から選択できます。
ここで、ネットワークを構成していきます。
まず初期時点では、最初の画像の次元を1次元につぶす Flatten と、 最後の分類を行う線形層がすでに追加されています。 この二つを削除することはできません。
その他の層は「レイヤー追加」で層を追加できます。 現時点では
- Conv2D
- MaxPool2D
- Linear
から追加できます。 なお、Conv2D と MaxPool2D は Flatten の直前、 Linear は最終層の後に追加されます。
なお、最終層を除く Conv2D, MaxPool2D, Linear の後ろには、 活性化関数を設定することができます。 現時点では
- 活性化関数なし
- ReLU
- Sigmoid
- Tanh
から設定できます。 最終層は活性化関数なしで固定されます。
学習エポック数を設定して、「学習開始」ボタンを押すと学習が始まります。
「上書き保存する」チェックボックスが Off の場合、
保存されるモデル名にはタイムスタンプが付与されます。
デフォルトでは <dataset名>.model.bin で保存されます。
なお、オプティマイザとしては AdamW を使用しています。
初期の学習率は 0.001 です。
スケジューラとして StepLR を採用しており、
これは1ステップごとに学習率を0.75倍ずつしていきます。
損失関数としては CrossEntropyLoss を使用しています。
そのため最終層の活性化関数がなしとなっています。
データセットについては、事前に画像の平均値や標準偏差で正規化されています。
学習ログは真ん中の列に表示されます。
上のグラフには、平均損失の推移が表示されます。
下のログエリアには、各バッチにおける損失や評価データに対応する正答率が表示されます。
評価データをランダムに選択し、それについて学習済みのモデルで実際に推論できます。 「画像をランダムに選択」ボタンを押すと、画像を閲覧できます。 これは学習前でも可能です。 モデル学習後、「推論」ボタンを押すと、各カテゴリの確率と正解が表示されます。 この確率は、全てのカテゴリに対する softmax を取得したのち100倍したものです。
MIT ライセンスの下で提供されます。詳しくはライセンスファイルをご覧ください。