Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Depois de vincular os valores às entradas e saídas de um modelo, você estará pronto para avaliar as entradas do modelo e obter suas previsões.
Para executar o modelo, você chama qualquer um dos métodos Evaluate* em seu LearningModelSession. Você pode usar o LearningModelEvaluationResult para examinar os recursos de saída.
Exemplo
No exemplo a seguir, executamos uma avaliação na sessão, passando a vinculação e uma ID de correlação exclusiva. Em seguida, analisamos a saída como uma lista de probabilidades, combinamo-la com uma lista de rótulos para as diferentes coisas que nosso modelo pode reconhecer e escrevemos os resultados no console:
// 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}");
}
}
Remoção do dispositivo
Se o dispositivo ficar indisponível ou se pretender utilizar um dispositivo diferente, tem de fechar a sessão e criar uma nova sessão.
Em alguns casos, os dispositivos gráficos podem precisar ser descarregados e recarregados, conforme explicado na documentação do DirectX.
Ao usar o Windows ML, você precisará detetar esse caso e fechar a sessão. Para recuperar de uma remoção ou reinicialização de dispositivo, você criará uma nova sessão, que acionará a lógica de seleção de dispositivo para ser executada novamente.
O caso mais comum em que você verá esse erro é durante LearningModelSession.Evaluate. No caso de remoção ou redefinição do dispositivo, LearningModelEvaluationResult.ErrorStatus será DXGI_ERROR_DEVICE_REMOVED ou DXGI_ERROR_DEVICE_RESET.
Ver também
Observação
Use os seguintes recursos para obter ajuda com o Windows ML:
- Para fazer ou responder a perguntas técnicas sobre o Windows ML, use a tag windows-machine-learning no Stack Overflow.
- Para relatar um bug, registre um problema em nosso GitHub.