Condividi tramite


Valutare gli input del modello

Dopo aver associato valori agli input e agli output di un modello, puoi valutare gli input del modello e ottenere le previsioni.

Per eseguire il modello, chiama uno dei metodi Evaluate* in LearningModelSession. Puoi usare LearningModelEvaluationResult per esaminare le caratteristiche di output.

Esempio

Nell'esempio seguente viene eseguita una valutazione della sessione, passando l'associazione e un ID di correlazione univoco. L'output viene quindi analizzato come elenco di probabilità e associato a un elenco di etichette per i diversi elementi che il modello è in grado di riconoscere. Infine vengono scritti 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 preferisci usarne uno diverso, devi chiudere la sessione e crearne una nuova.

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

Quando usi Windows ML, devi rilevare se questo caso è applicabile e chiudere la sessione. Per eseguire il ripristino dopo la rimozione o la reinizializzazione di un dispositivo, devi creare una nuova sessione, che attiva la logica di selezione del dispositivo per una nuova esecuzione.

Il caso più comune in cui puoi visualizzare questo errore è durante LearningModelSession.Evaluate. In caso di rimozione o reimpostazione di un dispositivo, il valore di LearningModelEvaluationResult.ErrorStatus sarà DXGI_ERROR_DEVICE_REMOVED o DXGI_ERROR_DEVICE_RESET.

Vedi anche

Nota

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.