Learn ML.NETのGet started in 10 minutesをやってみた

某氏と話していて「ML.NETいけるんじゃね?」(←だいぶ省略)と興味が湧いてきたのだが、Machine Learningよくわからないマンなので、、、
とりあえず、Get startedがあったので、Windowsでやってみました。

dotnet.microsoft.com

  1. Visual Studioをインストール → VS2019 16.2.3
  2. ML.NET Model Builder拡張をインストール → 16.0.1908.1402
  3. コンソールアプリ(.NET Core)プロジェクトを新規作成 → このときにソリューションとプロジェクトを同じディレクトリに配置しないこと
  4. プロジェクトにMachine Learningを追加 → Sentiment Analysisを選択

Time to trainの時間内に、さまざまなModelを試すみたい。

10秒
f:id:matsujirushix:20190831111821p:plain

30秒
f:id:matsujirushix:20190831111956p:plain

60秒
f:id:matsujirushix:20190831112732p:plain

最後にCodeを選択すると、自動的にソリューションにプロジェクトが2つ追加されました。

f:id:matsujirushix:20190831113410p:plain

ML.NET Model BuilderでTrainして、その結果がmyMLAppML.Modelライブラリとして生成されているようです。

で、myMLAppML.Modelライブラリを利用して推論するサンプルアプリがmyMLAppML.ConsoleAppアプリ

myMLAppML.ConsoleAppアプリのProgram.csを見ると、

MLContext mlContext = new MLContext();
ITransformer mlModel = mlContext.Model.Load(GetAbsolutePath(MODEL_FILEPATH), out DataViewSchema inputSchema);
var predEngine = mlContext.Model.CreatePredictionEngine<ModelInput, ModelOutput>(mlModel);

で、MODEL_FILEPATHからpredEngineを生成して、

ModelInput sampleData = CreateSingleDataSample(mlContext, DATA_FILEPATH);
ModelOutput predictionResult = predEngine.Predict(sampleData);

で、ModelInputをpredEngineに通してModelOutputを得ています。

MODEL_FILEPATHはMLModel.zipを指しており、これが学習済みモデルのようです。

MLModel.zipの中身は、

f:id:matsujirushix:20190831144210p:plain

なんだろ?
ML.NETのクラスをシリアライズした感じなのかな?

Visual Studioさえ入っていれば、VS拡張でササッとできてお手軽でした。