Compartir a través de


Evaluación de las entradas del modelo

Después de enlazar valores a las entradas y salidas de un modelo, podrás evaluar las entradas del modelo y obtener las predicciones correspondientes.

Para ejecutar el modelo, debes llamar a cualquiera de los métodos Evaluate* en tu instancia de LearningModelSession. Puedes usar LearningModelEvaluationResult para ver las características de salida.

Ejemplo

En el ejemplo siguiente, se ejecuta una evaluación en la sesión, y se pasan el enlace y un identificador de correlación único. A continuación, se analiza la salida como una lista de probabilidades, se relaciona con una lista de etiquetas para los distintos elementos que el modelo puede reconocer y se escriben los resultados en la consola:

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

Eliminación del dispositivo

Si el dispositivo deja de estar disponible o quieres usar otro, debes cerrar la sesión y crear una nueva.

En algunos casos, es posible que sea necesario descargar y volver a cargar los dispositivos de gráficos, como se explica en la documentación de DirectX.

Al usar Windows ML, deberás detectar este caso y cerrar la sesión. Para recuperarte de una eliminación o reinicialización del dispositivo, deberás crear una nueva sesión, que desencadenará una nueva ejecución de la lógica de selección del dispositivo.

El caso más común en el que verás este error es durante la ejecución del método LearningModelSession.Evaluate. En el caso de la eliminación o el restablecimiento del dispositivo, LearningModelEvaluationResult.ErrorStatus será DXGI_ERROR_DEVICE_REMOVED o DXGI_ERROR_DEVICE_RESET.

Consulte también

Nota:

Use los siguientes recursos para obtener ayuda con Windows ML:

  • Para formular o responder a preguntas técnicas sobre Windows Machine Learning, utilice la etiqueta windows-machine-learning en Stack Overflow.
  • Para notificar un error, registre un problema en GitHub.