Partilhar via


IProgressChannel Interface

Definição

Uma interface comum para relatórios de progresso. Espera-se que a interface do canal de progresso seja usada de apenas um thread.

Fluxo de trabalho com suporte:

  1. Crie o canal por meio de StartProgressChannel(String).
  2. Chame SetHeader(ProgressHeader, Action<IProgressEntry>) quantas vezes desejar (incluindo 0). Cada chamada para SetHeader(ProgressHeader, Action<IProgressEntry>) substituir a anterior.
  3. Relatar pontos de verificação (0 ou mais) chamando Checkpoint(Nullable<Double>[]).
  4. Repita as etapas 2-3 sempre que necessário.
  5. Descarte o canal.
public interface IProgressChannel : IDisposable, Microsoft.ML.Runtime.IProgressChannelProvider
type IProgressChannel = interface
    interface IProgressChannelProvider
    interface IDisposable
Public Interface IProgressChannel
Implements IDisposable, IProgressChannelProvider
Implementações

Métodos

Checkpoint(Nullable<Double>[])

Envie uma entrada de 'ponto de verificação'. Essas entradas têm a garantia de serem entregues ao ouvinte em andamento, se estiver interessado. Normalmente, isso conteria algumas métricas intermediárias, que são calculadas apenas em determinados momentos ('pontos de verificação') da computação.

Por exemplo, o SDCA pode relatar um ponto de verificação sempre que calcular a perda, ou o LBFGS pode relatar um ponto de verificação a cada iteração.

O único parâmetro, valuesé interpretado da seguinte forma:

  • Os primeiros itens MetricNames.Length, se presentes, são métricas.
  • Os itens progressnames.length subsequentes, se presentes, são unidades de progresso.
  • Os itens progressnames.length subsequentes, se presentes, são limites de progresso.
  • Se houver mais valores, uma exceção será gerada.
SetHeader(ProgressHeader, Action<IProgressEntry>)

Configure a estrutura de relatório:

  • Defina o 'cabeçalho' dos relatórios de progresso, definindo quais unidades de progresso e métricas serão relatadas.
  • Forneça um delegado thread-safe para ser invocado sempre que alguém precisar saber o progresso.

É aceitável chamar SetHeader(ProgressHeader, Action<IProgressEntry>) várias vezes (ou nenhuma), independentemente se o cálculo está em execução ou não. Devido à sincronização, a computação não deve negar chamadas aos delegados 'antigos' fillAction , mesmo depois que uma nova for fornecida.

StartProgressChannel(String)

Criar um canal de progresso para uma computação chamada name.

(Herdado de IProgressChannelProvider)

Aplica-se a