Freigeben über


Bewerten Sie die Modelleingaben

Sobald Sie Werte an die Eingaben und Ausgaben eines Modells gebunden haben, können Sie die Eingaben des Modells auswerten und die zugehörigen Vorhersagen abrufen.

Zum Ausführen des Modells rufen Sie eine der Evaluate*-Methoden für Ihre LearningModelSession auf. Sie können das LearningModelEvaluationResult verwenden, um sich die Ausgabefeatures anzusehen.

Beispiel

Im folgenden Beispiel führen wir eine Evaluierung der Sitzung durch, mit Angabe der Bindung und einer eindeutigen Korrelations-ID. Anschließend analysieren wir die Ausgabe als Eine Liste der Wahrscheinlichkeiten, stimmen sie mit einer Liste von Bezeichnungen für die verschiedenen Elemente überein, die unser Modell erkennen kann, und schreiben die Ergebnisse in die Konsole:

// 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}");
    }
}

Geräteentfernung

Wenn das Gerät nicht verfügbar ist oder Sie ein anderes Gerät verwenden möchten, müssen Sie die Sitzung schließen und eine neue Sitzung erstellen.

In einigen Fällen müssen Grafikgeräte möglicherweise entladen und neu geladen werden, wie in der DirectX-Dokumentation erläutert.

Bei Verwendung von Windows ML müssen Sie diesen Fall erkennen und die Sitzung schließen. Wenn Sie sich von der Entfernung oder Neuinitialisierung eines Geräts erholen möchten, erstellen Sie eine neue Sitzung, die die Geräteauswahllogik erneut ausführt.

Der häufigste Fall, in dem dieser Fehler angezeigt wird, ist während LearningModelSession.Evaluate. Im Fall des Entfernens oder Zurücksetzens des Geräts weist LearningModelEvaluationResult.ErrorStatus den Wert DXGI_ERROR_DEVICE_REMOVED oder DXGI_ERROR_DEVICE_RESET.

Siehe auch

Hinweis

Verwenden Sie die folgenden Ressourcen für Hilfe zu Windows ML:

  • Um technische Fragen zu Windows ML zu stellen oder zu beantworten, verwenden Sie bitte das Windows-Machine-Learning--Tag auf Stack Overflow-.
  • Um einen Fehler zu melden, melden Sie bitte ein Problem in unserem GitHub.