Udostępnij przez


Ocena danych wejściowych modelu

Po powiązaniu wartości z danymi wejściowymi i wyjściowymi modelu możesz przystąpić do oceny danych wejściowych modelu i uzyskiwania przewidywań.

Aby uruchomić model, należy wywołać dowolną z metod Evaluate* w modelu LearningModelSession. Aby zapoznać się z funkcjami wyjściowymi, możesz użyć elementu LearningModelEvaluationResult .

Przykład

W poniższym przykładzie uruchamiamy ewaluację w sesji, przekazując powiązanie i unikalny identyfikator korelacji. Następnie analizujemy dane wyjściowe jako listę prawdopodobieństwa, dopasujemy je do listy etykiet dla różnych elementów, które nasz model może rozpoznać, i zapiszemy wyniki w konsoli:

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

Usuwanie urządzenia

Jeśli urządzenie stanie się niedostępne lub jeśli chcesz użyć innego urządzenia, musisz zamknąć sesję i utworzyć nową sesję.

W niektórych przypadkach urządzenia graficzne mogą wymagać zwolnienia i ponownego załadowania, zgodnie z wyjaśnieniem w dokumentacji directx.

W przypadku korzystania z uczenia maszynowego z systemem Windows należy wykryć ten przypadek i zamknąć sesję. Aby odzyskać dane po usunięciu lub ponownym zainicjowaniu urządzenia, utworzysz nową sesję, która wyzwala logikę wyboru urządzenia do ponownego uruchomienia.

Najczęstszym przypadkiem, w którym ten błąd występuje, jest podczas learningModelSession.Evaluate. W przypadku usunięcia lub zresetowania urządzenia element LearningModelEvaluationResult.ErrorStatus zostanie DXGI_ERROR_DEVICE_REMOVED lub DXGI_ERROR_DEVICE_RESET.

Zobacz także

Uwaga / Notatka

Skorzystaj z następujących zasobów, aby uzyskać pomoc dotyczącą uczenia maszynowego z systemem Windows:

  • Aby zadać lub odpowiedzieć na pytania techniczne dotyczące uczenia maszynowego z systemem Windows, użyj tagu windows-machine-learning w witrynie Stack Overflow.
  • Aby zgłosić usterkę, popełnij zgłoszenie na GitHubie .