Machine Learning-modellen gebruiken

Voltooid

Nadat u een machine learning-model hebt getraind, is het tijd om het te gebruiken, zodat u voorspellingen kunt doen.

ML.NET modellen worden geserialiseerd en opgeslagen in een bestand. U kunt het modelbestand in elke .NET-toepassing laden en deze gebruiken om voorspellingen te doen via ML.NET API's.

Met Model Builder kunt u uw model eenvoudig gebruiken in bestaande toepassingen met behulp van codefragmenten en in nieuwe toepassingen met behulp van sjablonen.

Codefragment

Als u een bestaande toepassing hebt waarin u uw model wilt gebruiken om voorspellingen te doen, vereenvoudigt een codefragment het proces. Een codefragment gebruiken in uw toepassing:

  1. Voeg een verwijzing toe naar de klassebibliotheek die uw model bevat uit het project waarin u het model gaat gebruiken.
  2. Voeg het codefragment toe aan uw toepassing.

Het codefragment maakt een exemplaar van uw modelinvoer. Vervolgens wordt de Predict methode in het .consumption.cs-bestand aangeroepen om voorspellingen te doen met behulp van de invoergegevens die u hebt opgegeven.

Projectsjablonen

Net als de trainings- en verbruikscode die automatisch wordt gegenereerd tijdens het trainingsproces, biedt Model Builder de volgende sjablonen voor het automatisch genereren van nieuwe .NET-toepassingen om uw model te gebruiken.

Consoletoepassing

De consoletoepassingssjabloon is een C# .NET-toepassing die uw model gebruikt om voorspellingen te doen. Het bevat de volgende bestanden:

  • Program.cs: het toegangspunt van uw toepassing. Net als bij het codefragment maakt dit bestand een exemplaar van de invoer van uw model, gebruikt u de Predict methode in het .consumption.cs-bestand en wordt het resultaat weergegeven in de console.
  • <MODEL-NAME.mbconfig>: het .mbconfig-bestand voor uw model en gegenereerde trainings- en verbruikscode. Deze bestanden worden gekopieerd uit het klassebibliotheekproject waar u het machine learning-project oorspronkelijk hebt toegevoegd.

Web-API

De web-API-sjabloon is een ASP.NET Core-project dat is gebouwd via het ASP.NET Minimale API-toepassingsmodel om het hosten van uw model als een webservice te vereenvoudigen. Web-API's bieden u de flexibiliteit om voorspellingen te doen met uw model via HTTP-webaanvragen van verschillende clients, zoals desktop-, web- en mobiele toepassingen.

De web-API-sjabloon bevat de volgende bestanden:

  • Program.cs: het toegangspunt van uw toepassing. In dit bestand configureert uw toepassing de PredictionEnginePool service met behulp van afhankelijkheidsinjectie, definieert één /predict eindpunt en start uw toepassing om te luisteren naar binnenkomende HTTP-aanvragen.

    Als onderdeel van de predict eindpuntdefinitie wordt ook een handler gedefinieerd. De handler gebruikt de PredictionEnginePool service om voorspellingen te doen voor binnenkomende JSON-aanvragen die uw modelinvoergegevens bevatten. De handler retourneert vervolgens de resultaten van deze voorspellingen terug naar de client.

  • <MODEL-NAME.mbconfig>: het .mbconfig-bestand voor uw model en gegenereerde trainings- en verbruikscode. Deze bestanden worden gekopieerd uit het klassebibliotheekproject waar u het machine learning-project oorspronkelijk hebt toegevoegd.

Belangrijk

Het web-API-project gebruikt de Predict methode niet in het bestand .consumption.cs . In plaats daarvan wordt het geregistreerd PredictionEnginePool als een service met behulp van afhankelijkheidsinjectie. PredictionEngine is niet thread-safe. U moet ook overal een exemplaar maken dat nodig is in uw toepassing. Naarmate uw toepassing groeit, kan dit proces onbeheerbaar worden.

Gebruik voor betere prestaties en threadveiligheid een combinatie van afhankelijkheidsinjectie en de PredictionEnginePool service, waarmee een ObjectPool van PredictionEngine de objecten wordt gemaakt voor gebruik in uw toepassing.

Zie Afhankelijkheidsinjectie in ASP.NET Core voor meer informatie over afhankelijkheidsinjectie.

In de volgende les gebruikt u het model dat u hebt getraind om machinefouten in een .NET-consoletoepassing te voorspellen.