Évaluer les entrées de modèle
Une fois que vous avez lié des valeurs aux entrées et sorties d’un modèle, vous êtes prêt à évaluer les entrées du modèle et à obtenir ses prédictions.
Pour exécuter le modèle, vous appelez l’une des méthodes Evaluate* sur votre LearningModelSession. Vous pouvez utiliser le LearningModelEvaluationResult pour examiner les caractéristiques de sortie.
Exemple
Dans l’exemple suivant, nous exécutons une évaluation sur la session, en transmettant la liaison et un ID de corrélation unique. Ensuite, nous analysons la sortie en tant que liste de probabilités, nous la faisons correspondre à une liste d’étiquettes pour les différentes choses que notre modèle peut reconnaître, puis nous écrivons les résultats dans la console :
// How many times an evaluation has been run
private int runCount = 0;
private void EvaluateModel(
LearningModelSession session,
LearningModelBinding binding,
string outputName,
List<string> labels)
{
// Process the frame with the model
var results =
await session.EvaluateAsync(binding, $"Run {++runCount}");
// Retrieve the results of evaluation
var resultTensor = results.Outputs[outputName] as TensorFloat;
var resultVector = resultTensor.GetAsVectorView();
// Find the top 3 probabilities
List<(int index, float probability)> indexedResults = new List<(int, float)>();
for (int i = 0; i < resultVector.Count; i++)
{
indexedResults.Add((index: i, probability: resultVector.ElementAt(i)));
}
// Sort the results in order of highest probability
indexedResults.Sort((a, b) =>
{
if (a.probability < b.probability)
{
return 1;
}
else if (a.probability > b.probability)
{
return -1;
}
else
{
return 0;
}
});
// Display the results
for (int i = 0; i < 3; i++)
{
Debug.WriteLine(
$"\"{labels[indexedResults[i].index]}\" with confidence of {indexedResults[i].probability}");
}
}
Retrait d’un appareil
Si l’appareil n’est plus disponible, ou si vous souhaitez utiliser un autre appareil, vous devez fermer la session et en créer une nouvelle.
Dans certains cas, il peut être nécessaire de décharger et recharger les appareils graphiques, comme expliqué dans la documentation DirectX.
Quand vous utilisez Windows ML, vous devez détecter ce cas et fermer la session. Pour récupérer suite au retrait ou à la réinitialisation d’un appareil, vous devez créer une nouvelle session, ce qui déclenche la réexécution de la logique de sélection d’appareil.
Vous observerez le plus souvent cette erreur pendant LearningModelSession.Evaluate. En cas de retrait ou de réinitialisation d’appareil, LearningModelEvaluationResult.ErrorStatus sera DXGI_ERROR_DEVICE_REMOVED ou DXGI_ERROR_DEVICE_RESET.
Voir aussi
- Précédent : Lier un modèle
Remarque
Utilisez les ressources suivantes pour obtenir de l’aide sur Windows ML :
- Pour poser des questions techniques ou apporter des réponses à des questions techniques sur Windows ML, veuillez utiliser le mot clé windows-machine-learning sur Stack Overflow.
- Pour signaler un bogue, veuillez signaler un problème dans notre plateforme GitHub.