Freigeben über


IProgressChannel Schnittstelle

Definition

Eine allgemeine Schnittstelle für die Statusberichterstattung. Es wird erwartet, dass die Statuskanalschnittstelle nur aus einem Thread verwendet wird.

Unterstützte Workflow:

  1. Erstellen Sie den Kanal über StartProgressChannel(String).
  2. Rufen Sie SetHeader(ProgressHeader, Action<IProgressEntry>) so oft wie gewünscht an (einschließlich 0). Jeder Aufruf, um SetHeader(ProgressHeader, Action<IProgressEntry>) die vorherige zu überlagern.
  3. Melden Sie Prüfpunkte (0 oder mehr) durch Aufrufen Checkpoint(Nullable<Double>[]).
  4. Wiederholen Sie die Schritte 2-3 so oft wie erforderlich.
  5. Entsorgen Sie den Kanal.
public interface IProgressChannel : IDisposable, Microsoft.ML.Runtime.IProgressChannelProvider
type IProgressChannel = interface
    interface IProgressChannelProvider
    interface IDisposable
Public Interface IProgressChannel
Implements IDisposable, IProgressChannelProvider
Implementiert

Methoden

Checkpoint(Nullable<Double>[])

Übermitteln Sie einen Eintrag "Prüfpunkt". Diese Einträge werden garantiert an den Statuslistener übermittelt, falls sie interessiert sind. In der Regel würde dies einige Zwischenmetriken enthalten, die nur in bestimmten Momenten ('Prüfpunkte') der Berechnung berechnet werden.

Beispielsweise kann SDCA jedes Mal einen Prüfpunkt melden, wenn er den Verlust berechnet, oder LBFGS kann einen Prüfpunkt jedes Iterationsbericht melden.

Der einzige Parameter, valueswird in der folgenden Weise interpretiert:

  • Erste MetricNames.Length-Elemente, falls vorhanden, sind Metriken.
  • Nachfolgende ProgressNames.Length-Elemente, falls vorhanden, sind Statuseinheiten.
  • Nachfolgende ProgressNames.Length-Elemente, falls vorhanden, sind Statusbeschränkungen.
  • Wenn weitere Werte verbleiben, wird eine Ausnahme ausgelöst.
SetHeader(ProgressHeader, Action<IProgressEntry>)

Einrichten der Berichtsstruktur:

  • Legen Sie die Kopfzeile der Statusberichte fest, indem Sie definieren, welche Statuseinheiten und Metriken gemeldet werden.
  • Stellen Sie einen Thread-sicheren Stellvertretung bereit, der aufgerufen werden muss, wenn jeder den Fortschritt kennen muss.

Es ist zulässig, mehrere Male (oder keine) aufzurufen SetHeader(ProgressHeader, Action<IProgressEntry>) , unabhängig davon, ob die Berechnung ausgeführt wird oder nicht. Aufgrund der Synchronisierung sollte die Berechnung nicht die Aufrufe der "alten" fillAction Stellvertretungen verweigern, auch nachdem eine neue bereitgestellt wurde.

StartProgressChannel(String)

Erstellen Sie einen Statuskanal für eine Berechnung mit dem Namen name".

(Geerbt von IProgressChannelProvider)

Gilt für: