Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Una vez que haya enlazado valores a las entradas y salidas de un modelo, estará listo para evaluar las entradas del modelo y obtener sus predicciones.
Para ejecutar el modelo, llame a cualquiera de los métodos Evaluate* en learningModelSession. Puede usar LearningModelEvaluationResult para examinar las características de salida.
Ejemplo
En el siguiente ejemplo, se ejecuta una evaluación en la sesión, y se pasan tanto el enlace como un identificador de correlación único. A continuación, analizamos la salida como una lista de probabilidades, lo hacemos coincidir con una lista de etiquetas para las distintas cosas que nuestro modelo puede reconocer y escribir 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 de dispositivos
Si el dispositivo deja de estar disponible o si desea usar otro dispositivo, debe cerrar la sesión y crear una nueva sesión.
En algunos casos, es posible que los dispositivos gráficos deban descargarse y volver a cargarse, como se explica en la documentación de DirectX.
Al usar Windows ML, deberá detectar este caso y cerrar la sesión. Para recuperarse de una eliminación de dispositivos o volver a inicializarlo, creará una nueva sesión, que desencadena la lógica de selección del dispositivo para que se vuelva a ejecutar.
El caso más común en el que verá este error es durante LearningModelSession.Evaluate. En el caso de la eliminación o el restablecimiento del dispositivo, LearningModelEvaluationResult.ErrorStatus se DXGI_ERROR_DEVICE_REMOVED o DXGI_ERROR_DEVICE_RESET.
Consulte también
- Anterior: Enlazado de un modelo
Nota:
Use los siguientes recursos para obtener ayuda con Windows ML:
- Para formular o responder preguntas técnicas sobre Windows ML, use la etiqueta windows-machine-learning en Stack Overflow.
- Para notificar un error, envíe un problema en nuestro GitHub.