Partager via


Évaluer les entrées de modèle

Une fois que vous avez des valeurs liées 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 LearningModelEvaluationResult pour examiner les fonctionnalités 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, la mettre en correspondance avec une liste d’étiquettes pour les différentes choses que notre modèle peut reconnaître et écrire 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}");
    }
}

Suppression de l’appareil

Si l’appareil devient indisponible ou si vous souhaitez utiliser un autre appareil, vous devez fermer la session et créer une session.

Dans certains cas, les appareils graphiques peuvent avoir besoin d’être déchargés et rechargés, comme expliqué dans la documentation DirectX.

Lorsque vous utilisez Windows ML, vous devez détecter ce cas et fermer la session. Pour effectuer une récupération à partir d’une suppression ou d’une réinitialisation d’un appareil, vous allez créer une nouvelle session, ce qui déclenche l’exécution de la logique de sélection de l’appareil.

Le cas le plus courant où vous verrez cette erreur est pendant LearningModelSession.Evaluate. Dans le cas de la suppression ou de la réinitialisation de l’appareil, LearningModelEvaluationResult.ErrorStatus est DXGI_ERROR_DEVICE_REMOVED ou DXGI_ERROR_DEVICE_RESET.

Voir aussi

Remarque

Utilisez les ressources suivantes pour obtenir de l’aide sur Windows ML :

  • Pour poser ou répondre à des questions techniques sur Windows ML, utilisez la balise windows-machine-learning sur Stack Overflow.
  • Pour signaler un bogue, veuillez signaler un problème sur notre GitHub.