Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
När du har bundit värden till en modells indata och utdata är du redo att utvärdera modellens indata och få dess förutsägelser.
Om du vill köra modellen anropar du någon av metoderna Evaluate* på din LearningModelSession. Du kan använda LearningModelEvaluationResult för att titta på utdatafunktionerna.
Exempel
I följande exempel kör vi en utvärdering av sessionen och skickar in bindningen och ett unikt korrelations-ID. Sedan parsar vi utdata som en lista över sannolikheter, matchar den med en lista med etiketter för de olika saker som vår modell kan känna igen och skriver resultatet till konsolen:
// 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}");
}
}
Borttagning av enhet
Om enheten blir otillgänglig, eller om du vill använda en annan enhet, måste du stänga sessionen och skapa en ny session.
I vissa fall kan grafikenheter behöva tas bort och läsas in igen, enligt beskrivningen i DirectX-dokumentationen.
När du använder Windows ML måste du identifiera det här fallet och stänga sessionen. Om du vill återställa från en enhetsborttagning eller ny initiering skapar du en ny session som utlöser logiken för enhetsval som ska köras igen.
Det vanligaste fallet där du ser det här felet är under LearningModelSession.Evaluate. Om enheten tas bort eller återställs blir LearningModelEvaluationResult.ErrorStatusDXGI_ERROR_DEVICE_REMOVED eller DXGI_ERROR_DEVICE_RESET.
Se även
- Föregående: Binda en modell
Anmärkning
Använd följande resurser för hjälp med Windows ML:
- Om du vill ställa eller besvara tekniska frågor om Windows ML använder du taggen windows-machine-learning på Stack Overflow.
- Om du vill rapportera en bugg, skicka in en felrapport på vår GitHub-sida .