Condividi tramite


Valutare gli input del modello

Dopo aver associato valori agli input e agli output di un modello, è possibile valutare gli input del modello e ottenere le stime.

Per eseguire il modello, chiamare uno dei metodi Evaluate* in LearningModelSession. È possibile usare LearningModelEvaluationResult per esaminare le funzionalità di output.

Esempio

Nell'esempio seguente viene eseguita una valutazione sulla sessione, passando il binding e un ID di correlazione univoco. Quindi, l'output viene analizzato come elenco di probabilità, corrispondente a un elenco di etichette per i diversi elementi che il modello può riconoscere e scrivere i risultati nella 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}");
    }
}

Rimozione del dispositivo

Se il dispositivo non è più disponibile o se si vuole usare un dispositivo diverso, è necessario chiudere la sessione e creare una nuova sessione.

In alcuni casi, potrebbe essere necessario scaricare e ricaricare i dispositivi grafici, come illustrato nella documentazione di DirectX.

Quando si usa Windows ML, è necessario rilevare questo caso e chiudere la sessione. Per eseguire il ripristino da una rimozione o una nuova inizializzazione del dispositivo, si creerà una nuova sessione che attiva la logica di selezione del dispositivo per l'esecuzione di nuovo.

Il caso più comune in cui verrà visualizzato questo errore è durante LearningModelSession.Evaluate. In caso di rimozione o reimpostazione del dispositivo, LearningModelEvaluationResult.ErrorStatus verrà DXGI_ERROR_DEVICE_REMOVED o DXGI_ERROR_DEVICE_RESET.

Vedere anche

Annotazioni

Per informazioni su Windows Machine Learning, usa le risorse seguenti:

  • Per porre domande tecniche o rispondere a domande tecniche su Windows Machine Learning, usa il tag windows-machine-learning in Stack Overflow.
  • Per segnalare un bug, registra il problema in GitHub.