Freigeben über


Bewerten der Modelleingaben

Sobald Sie Werte an die Eingaben und Ausgaben eines Modells gebunden haben, sind Sie bereit, die Eingaben des Modells auszuwerten und seine Vorhersagen zu erhalten.

Um das Modell auszuführen, rufen Sie eine der Evaluate*-Methoden für LearningModelSession auf. Sie können LearningModelEvaluationResult verwenden, um die Ausgabefunktionen zu untersuchen.

Beispiel

Im folgenden Beispiel führen wir eine Auswertung der Sitzung aus und übergeben die Bindung und eine eindeutige Korrelations-ID. Dann analysieren wir die Ausgabe als Liste von Wahrscheinlichkeiten, vergleichen Sie mit einer Liste von Bezeichnungen für die verschiedenen Objekte, die das 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}");
    }
}

Entfernen von Geräten

Wenn das Gerät nicht mehr 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.

Wenn Sie Windows ML verwenden, müssen Sie dieses Szenario erkennen und die Sitzung schließen. Zur Wiederherstellung nach dem Entfernen oder erneuten Initialisieren eines Geräts erstellen Sie eine neue Sitzung, die das erneute Ausführen der Geräteauswahllogik auslöst.

Der häufigste Fall, in dem dieser Fehler angezeigt wird, ist bei 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

Verwende die folgenden Ressourcen, wenn du Hilfe mit Windows ML benötigst:

  • Wenn du technische Fragen zu Windows ML stellen oder beantworten möchtest, verwende das Tag windows-machine-learning auf Stack Overflow.
  • Wenn du einen Fehler melden möchtest, erstelle eine Anfrage auf GitHub.