Udostępnij za pośrednictwem


IProgressChannel Interfejs

Definicja

Wspólny interfejs raportowania postępu. Oczekuje się, że interfejs kanału postępu jest używany tylko z jednego wątku.

Obsługiwany przepływ pracy:

  1. Utwórz kanał za pomocą polecenia StartProgressChannel(String).
  2. Wywołaj SetHeader(ProgressHeader, Action<IProgressEntry>) dowolną liczbę razy (w tym 0). Każde wywołanie SetHeader(ProgressHeader, Action<IProgressEntry>) zastępuje poprzednie.
  3. Punkty kontrolne raportu (co najmniej 0) wywołując polecenie Checkpoint(Nullable<Double>[]).
  4. Powtórz kroki 2–3 tak często, jak to konieczne.
  5. Usuwanie kanału.
public interface IProgressChannel : IDisposable, Microsoft.ML.Runtime.IProgressChannelProvider
type IProgressChannel = interface
    interface IProgressChannelProvider
    interface IDisposable
Public Interface IProgressChannel
Implements IDisposable, IProgressChannelProvider
Implementuje

Metody

Checkpoint(Nullable<Double>[])

Prześlij wpis "checkpoint". Te wpisy mają gwarancję dostarczenia do odbiornika postępu, jeśli jest zainteresowany. Zazwyczaj zawierałoby to pewne metryki pośrednie, które są obliczane tylko w określonych momentach (punktach kontrolnych) obliczeń.

Na przykład usługa SDCA może zgłaszać punkt kontrolny za każdym razem, gdy oblicza utratę, lub LBFGS może zgłosić punkt kontrolny każdej iteracji.

Jedyny parametr , valuesjest interpretowany w następujący sposób:

  • Pierwsze elementy MetricNames.Length, jeśli istnieją, to metryki.
  • Kolejne elementy ProgressNames.Length, jeśli są obecne, to jednostki postępu.
  • Kolejne elementy ProgressNames.Length, jeśli są obecne, są limitami postępu.
  • Jeśli pozostałe wartości pozostaną, zostanie zgłoszony wyjątek.
SetHeader(ProgressHeader, Action<IProgressEntry>)

Skonfiguruj strukturę raportowania:

  • Ustaw "nagłówek" raportów postępu, definiując, które jednostki postępu i metryki zostaną zgłoszone.
  • Za każdym razem, gdy każda osoba musi znać postęp, podaj delegata bezpiecznego wątkowo.

Można wywołać SetHeader(ProgressHeader, Action<IProgressEntry>) wiele razy (lub nie), niezależnie od tego, czy obliczenie jest uruchomione, czy nie. Ze względu na synchronizację obliczenia nie powinny odmawiać wywołań do "starych" fillAction delegatów nawet po udostępnieniu nowego.

StartProgressChannel(String)

Utwórz kanał postępu dla obliczeń o nazwie name.

(Odziedziczone po IProgressChannelProvider)

Dotyczy