Partilhar via


Avaliar as entradas de modelo

Depois de associar valores às entradas e saídas de um modelo, você estará pronto para avaliar as entradas do modelo e obter as previsões dele.

Para executar o modelo, você chama qualquer um dos métodos Evaluate* no LearningModelSession. É possível usar o LearningModelEvaluationResult para examinar os recursos de saída.

Exemplo

No exemplo a seguir, executamos uma avaliação na sessão, passando a associação e uma ID de correlação exclusiva. Em seguida, analisamos a saída como uma lista de probabilidades, a correspondemos a uma lista de rótulos para as diferentes coisas que nosso modelo pode reconhecer e gravamos 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 de dispositivo

Se o dispositivo estiver desabilitado ou se você quiser usar um dispositivo diferente, deverá fechar a sessão e criar uma 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á detectar esse caso e fechar a sessão. Para se recuperar de uma remoção ou reinicialização do dispositivo, você criará uma sessão, o que acionará a lógica de seleção do dispositivo para ser executada novamente.

O caso mais comum em que você verá esse erro é durante LearningModelSession.Evaluate. Em caso de remoção ou redefinição de dispositivo, o LearningModelEvaluationResult.ErrorStatus será DXGI_ERROR_DEVICE_REMOVED ou DXGI_ERROR_DEVICE_RESET.

Confira também

Observação

Use os recursos a seguir para obter ajuda com o Windows ML:

  • Para fazer perguntas ou responder a perguntas técnicas sobre o Windows ML, use a marca windows-machine-learning no Stack Overflow.
  • Para relatar um bug, registre um problema no nosso GitHub.