다음을 통해 공유


모델 입력 평가

모델의 입력 및 출력에 값을 바인딩한 후에는 모델의 입력을 평가하고 해당 예측을 가져올 준비가 되었습니다.

모델을 실행하려면 LearningModelSession에서 Evaluate* 메서드를 호출합니다. LearningModelEvaluationResult를 사용하여 출력 기능을 확인할 수 있습니다.

예시

다음 예제에서는 바인딩과 고유한 상관 관계 ID를 전달하여 세션에 대한 평가를 실행합니다. 그런 다음, 출력을 확률 목록으로 구문 분석하고, 모델에서 인식할 수 있는 여러 항목에 대한 레이블 목록과 일치시키고, 결과를 콘솔에 기록합니다.

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

디바이스 제거

디바이스를 사용할 수 없게 되거나 다른 디바이스를 사용하려는 경우 세션을 닫고 새 세션을 만들어야 합니다.

DirectX 설명서에 설명된 대로 그래픽 디바이스를 언로드하고 다시 로드해야 하는 경우도 있습니다.

Windows ML을 사용하는 경우 이 사례를 검색하고 세션을 닫아야 합니다. 디바이스 제거 또는 다시 초기화를 복구하려면 새 세션을 만들어 디바이스 선택 논리가 다시 실행되도록 트리거합니다.

이 오류가 표시되는 가장 일반적인 경우는 LearningModelSession.Evaluate 중입니다. 디바이스를 제거하거나 다시 설정하는 경우에는 LearningModelEvaluationResult.ErrorStatusDXGI_ERROR_DEVICE_REMOVED 또는 DXGI_ERROR_DEVICE_RESET입니다.

참고 항목

참고 항목

Windows ML에 대한 도움말은 다음 리소스를 참조하세요.

  • Windows ML에 대한 기술적인 질문을 하거나 질문에 답하려면, Stack Overflow에서 windows-machine-learning 태그를 사용하세요.
  • 버그를 보고하려면 GitHub에서 문제를 제출하세요.