IProgressChannel Schnittstelle

Definition

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

Unterstützter 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 SetHeader(ProgressHeader, Action<IProgressEntry>) ersetzt die vorherige.
  3. Melden Sie Prüfpunkte (0 oder mehr) durch Aufrufen Checkpoint(Nullable<Double>[]).
  4. Wiederholen Sie die Schritte 2 bis 3 so oft wie nötig.
  5. Verwerfen 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

Name Beschreibung
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 enthält dies einige Zwischenmetriken, die nur in bestimmten Momenten ('Prüfpunkten') der Berechnung berechnet werden.

Beispielsweise kann SDCA bei jeder Berechnung des Verlusts einen Prüfpunkt melden, oder LBFGS kann einen Prüfpunkt bei jeder Iteration melden.

Der einzige Parameter, valuesder in folgender Weise interpretiert wird:

  • First MetricNames.Length items, if present, are metrics.
  • Nachfolgende ProgressNames.Length-Elemente( sofern vorhanden) sind Statuseinheiten.
  • Nachfolgende ProgressNames.Length-Elemente( sofern vorhanden) sind Statusbeschränkungen.
  • Wenn weitere Werte verbleiben, wird eine Ausnahme ausgelöst.
SetHeader(ProgressHeader, Action<IProgressEntry>)

Einrichten der Berichtsstruktur:

  • Legen Sie den "Header" der Statusberichte fest, und definieren Sie, welche Statuseinheiten und Metriken gemeldet werden sollen.
  • Stellen Sie einen threadsicheren Delegat bereit, der aufgerufen werden kann, wenn jeder den Fortschritt kennen muss.

Es ist akzeptabel, 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: