모델 입력 평가
모델의 입력 및 출력에 값을 바인딩한 후에는 모델의 입력을 평가하고 해당 예측을 가져올 준비가 되었습니다.
모델을 실행하려면 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.ErrorStatus가 DXGI_ERROR_DEVICE_REMOVED 또는 DXGI_ERROR_DEVICE_RESET입니다.
참고 항목
- 이전: 모델 바인딩
참고 항목
Windows ML에 대한 도움말은 다음 리소스를 참조하세요.
- Windows ML에 대한 기술적인 질문을 하거나 질문에 답하려면, Stack Overflow에서 windows-machine-learning 태그를 사용하세요.
- 버그를 보고하려면 GitHub에서 문제를 제출하세요.