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


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

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

Чтобы запустить модель, вызовите любой метод 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:

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