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


IProgressChannel Интерфейс

Определение

Общий интерфейс для отчетов о ходе выполнения. Ожидается, что интерфейс канала progress используется только из одного потока.

Поддерживаемый рабочий процесс:

  1. Создайте канал с помощью StartProgressChannel(String).
  2. Вызовите SetHeader(ProgressHeader, Action<IProgressEntry>) столько раз, сколько угодно (включая 0). Каждый вызов SetHeader(ProgressHeader, Action<IProgressEntry>) заменяет предыдущий.
  3. Отчеты контрольных точек (0 или более) путем вызова Checkpoint(Nullable<Double>[]).
  4. Повторяйте шаги 2–3 как можно чаще.
  5. Удалите канал.
public interface IProgressChannel : IDisposable, Microsoft.ML.Runtime.IProgressChannelProvider
type IProgressChannel = interface
    interface IProgressChannelProvider
    interface IDisposable
Public Interface IProgressChannel
Implements IDisposable, IProgressChannelProvider
Реализации

Методы

Checkpoint(Nullable<Double>[])

Отправьте запись "контрольная точка". Эти записи гарантированно будут доставлены прослушивателю хода выполнения, если это интересно. Как правило, это будет содержать некоторые промежуточные метрики, которые вычисляются только в определенные моменты (контрольные точки) вычислений.

Например, SDCA может сообщать о контрольной точке каждый раз при вычислении потери, или LBFGS может сообщать о контрольной точке каждую итерацию.

Единственный параметр valuesинтерпретируется следующим образом:

  • Первые элементы MetricNames.Length, если они присутствуют, являются метриками.
  • Последующие элементы ProgressNames.Length, если они присутствуют, являются единицами выполнения.
  • Последующие элементы ProgressNames.Length, если они присутствуют, являются ограничениями хода выполнения.
  • Если осталось больше значений, создается исключение.
SetHeader(ProgressHeader, Action<IProgressEntry>)

Настройте структуру отчетов:

  • Задайте "заголовок" отчетов о ходе выполнения, определяя, какие единицы хода выполнения и метрики будут сообщаться.
  • Предоставьте потокобезопасный делегат для вызова всякий раз, когда кто-либо должен знать ход выполнения.

Можно вызывать SetHeader(ProgressHeader, Action<IProgressEntry>) несколько раз (или нет), независимо от того, выполняется ли вычисление. Из-за синхронизации вычисление не должно запрещать вызовы старых fillAction делегатов даже после предоставления нового.

StartProgressChannel(String)

Создайте канал хода выполнения для вычисления с именем name.

(Унаследовано от IProgressChannelProvider)

Применяется к