Поделиться через


Оценка входных данных модели

После привязки значений к входным и выходным данным модели можно оценить входные данные модели и получить его прогнозы.

Чтобы запустить модель, необходимо вызвать любой из методов Evaluate* в learningModelSession. Вы можете использовать LearningModelEvaluationResult для просмотра выходных функций.

Пример

В следующем примере мы выполняем оценку параметров сеанса, передавая данные привязки и уникальный корреляционный идентификатор. Затем мы анализируем выходные данные как список вероятностей, сопоставляем его со списком меток для различных способов распознавания модели и записываем результаты в консоль:

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

Удаление устройства

Если устройство становится недоступным или хотите использовать другое устройство, необходимо закрыть сеанс и создать новый сеанс.

В некоторых случаях графические устройства могут быть выгружены и перезагружены, как описано в документации DirectX.

При использовании Windows ML необходимо обнаружить этот случай и закрыть сеанс. Чтобы восстановиться после удаления или повторной инициализации устройства, вы создадите новый сеанс, который активирует логику выбора устройства для повторного выполнения.

Наиболее распространенный случай, когда эта ошибка возникает во время LearningModelSession.Evaluate. В случае удаления или сброса устройства learningModelEvaluationResult.ErrorStatus будет DXGI_ERROR_DEVICE_REMOVED или DXGI_ERROR_DEVICE_RESET.

См. также

Замечание

Используйте следующие ресурсы, чтобы получить помощь по Windows ML.

  • Чтобы задать технические вопросы о машинном обучении в Windows или ответить на них, используйте тег windows-machine-learning в Stack Overflow.
  • Сообщить об ошибке можно в нашем репозитории GitHub.