O pacote TFRUNS Fornece um conjunto de ferramentas para rastrear, visualizar e gerenciar o TensorFlow Coaching Runs e experimentos de R. Use o pacote TFRUNS para:
Rastreie os hyperparameters, métricas, saída e código -fonte de cada treinamento executado.
Evaluate hiperparmaeters e métricas em execuções para encontrar o modelo de melhor desempenho.
Gere automaticamente relatórios para visualizar execuções ou comparações individuais de treinamento entre execuções.
Você pode instalar o TFRUNS Pacote do GitHub da seguinte forma:
devtools::install_github("rstudio/tfruns")
A documentação completa para TFRUNS está disponível no Tensorflow para r web site.
TFRUNS pretende ser usado com o Keras e/ou o TFestimators Pacotes, ambos fornecem interfaces de nível mais alto para o tensorflow a partir de R. Esses pacotes podem ser instalados com:
# keras
set up.packages("keras")
# tfestimators
devtools::install_github("rstudio/tfestimators")
Treinamento
Nas seções seguintes, descreveremos as várias capacidades de TFRUNS. Nosso exemplo de script de treinamento (mnist_mlp.r) treina um modelo Keras para reconhecer dígitos MNIST.
Para treinar um modelo com TFRUNSbasta usar o training_run()
função no lugar do supply()
função para executar seu script R. Por exemplo:
Quando o treinamento for concluído, um resumo da corrida será exibido automaticamente se você estiver dentro de uma sessão interativa R:
As métricas e a saída de cada execução são capturadas automaticamente dentro de um executar diretório o que é único para cada execução que você inicia. Observe que, para modelos de estimador Keras e TF, esses dados são capturados automaticamente (não são necessárias alterações no seu código -fonte).
Você pode ligar para o latest_run()
função para visualizar os resultados da última execução (incluindo o caminho para o diretório de execução que armazena toda a saída da corrida):
$ run_dir : chr "runs/2017-10-02T14-23-38Z"
$ eval_loss : num 0.0956
$ eval_acc : num 0.98
$ metric_loss : num 0.0624
$ metric_acc : num 0.984
$ metric_val_loss : num 0.0962
$ metric_val_acc : num 0.98
$ flag_dropout1 : num 0.4
$ flag_dropout2 : num 0.3
$ samples : int 48000
$ validation_samples: int 12000
$ batch_size : int 128
$ epochs : int 20
$ epochs_completed : int 20
$ metrics : chr "(metrics knowledge body)"
$ mannequin : chr "(mannequin abstract)"
$ loss_function : chr "categorical_crossentropy"
$ optimizer : chr "RMSprop"
$ learning_rate : num 0.001
$ script : chr "mnist_mlp.R"
$ begin : POSIXct(1:1), format: "2017-10-02 14:23:38"
$ finish : POSIXct(1:1), format: "2017-10-02 14:24:24"
$ accomplished : logi TRUE
$ output : chr "(script ouptut)"
$ source_code : chr "(supply archive)"
$ context : chr "native"
$ sort : chr "coaching"
O diretório de execução usado no exemplo acima é “RUNS/2017-10-02T14-23-38Z”. Os diretórios de execução são, por padrão, gerados no subdiretório “execuções” do diretório de trabalho atual e usam um registro de knowledge e hora como o nome do diretório de execução. Você pode visualizar o relatório para qualquer execução usando o view_run()
função:
view_run("runs/2017-10-02T14-23-38Z")
Comparando execuções
Vamos fazer algumas alterações em nosso script de treinamento para ver se podemos melhorar o desempenho do modelo. Vamos alterar o número de unidades em nossa primeira camada densa para 128, alterar o learning_rate
de 0,001 a 0,003 e execute 30 em vez de 20 epochs
. Depois de fazer essas alterações no código-fonte, executamos novamente o script usando training_run()
Como antes:
training_run("mnist_mlp.R")
Isso também nos mostrará um relatório resumindo os resultados da execução, mas o que realmente estamos interessados é uma comparação entre esta execução e a anterior. Podemos ver uma comparação através do compare_runs()
função:
O relatório de comparação mostra os atributos do modelo e as métricas lado a lado, bem como diferenças no código-fonte e saída do script de treinamento.
Observe que compare_runs()
Por padrão, comparará as duas últimas execuções, mas você pode passar por dois diretórios de execução que deseja comparar.
Usando sinalizadores
Ajustar um modelo geralmente requer explorar o impacto das mudanças em muitos hiperparâmetros. A melhor maneira de abordar isso geralmente não é alterando o código -fonte do script de treinamento, como fizemos acima, mas, em vez disso, definindo sinalizadores para os principais parâmetros que você pode querer variar. No exemplo de script, você pode ver que fizemos isso para o dropout
camadas:
FLAGS <- flags(
flag_numeric("dropout1", 0.4),
flag_numeric("dropout2", 0.3)
)
Essas bandeiras são usadas na definição de nosso modelo aqui:
mannequin <- keras_model_sequential()
mannequin %>%
layer_dense(items = 128, activation = 'relu', input_shape = c(784)) %>%
layer_dropout(fee = FLAGS$dropout1) %>%
layer_dense(items = 128, activation = 'relu') %>%
layer_dropout(fee = FLAGS$dropout2) %>%
layer_dense(items = 10, activation = 'softmax')
Depois de definirmos sinalizadores, podemos passar valores de bandeira alternativos para training_run()
do seguinte modo:
training_run('mnist_mlp.R', flags = c(dropout1 = 0.2, dropout2 = 0.2))
Você não precisa especificar todos os sinalizadores (qualquer sinalizador excluído simplesmente usará seu valor padrão).
As bandeiras tornam muito simples explorar sistematicamente o impacto das mudanças nos hiperparâmetros no desempenho do modelo, por exemplo:
Os valores de sinalização são incluídos automaticamente nos dados de execução com um prefixo “sinalizador” (por exemplo flag_dropout1
Assim, flag_dropout2
).
Veja o artigo sobre bandeiras de treinamento Para documentação adicional sobre o uso de sinalizadores.
Analisar corridas
Demonstramos visualizar e comparar uma ou duas execuções, no entanto, à medida que você acumula mais corridas, você geralmente deseja analisar e comparar as execuções de muitas corridas. Você pode usar o ls_runs()
Função para produzir um quadro de dados com informações de resumo sobre todas as execuções que você conduziu em um determinado diretório:
# A tibble: 6 x 27
run_dir eval_loss eval_acc metric_loss metric_acc metric_val_loss
1 runs/2017-10-02T14-56-57Z 0.1263 0.9784 0.0773 0.9807 0.1283
2 runs/2017-10-02T14-56-04Z 0.1323 0.9783 0.0545 0.9860 0.1414
3 runs/2017-10-02T14-55-11Z 0.1407 0.9804 0.0348 0.9914 0.1542
4 runs/2017-10-02T14-51-44Z 0.1164 0.9801 0.0448 0.9882 0.1396
5 runs/2017-10-02T14-37-00Z 0.1338 0.9750 0.1097 0.9732 0.1328
6 runs/2017-10-02T14-23-38Z 0.0956 0.9796 0.0624 0.9835 0.0962
# ... with 21 extra variables: metric_val_acc , flag_dropout1 ,
# flag_dropout2 , samples , validation_samples , batch_size ,
# epochs , epochs_completed , metrics , mannequin , loss_function ,
# optimizer , learning_rate , script , begin , finish ,
# accomplished , output , source_code , context , sort
Desde ls_runs()
Retorna um quadro de dados, você também pode render View()
função:
O ls_runs()
função também suporta subset
e order
argumentos. Por exemplo, o seguinte renderá todas as execuções com uma precisão de avaliação melhor que 0,98:
ls_runs(eval_acc > 0.98, order = eval_acc)
Você pode passar os resultados de ls_runs()
Para comparar as execuções (que sempre comparam as duas primeiras execuções aprovadas). Por exemplo, isso comparará as duas execuções que tiveram melhor desempenho em termos de precisão da avaliação:
compare_runs(ls_runs(eval_acc > 0.98, order = eval_acc))
Rstudio ide
Se você usar RStudio com TFRUNSé fortemente recomendado que você atualize para o atual Liberação de visualização de RStudio v1.1, pois existem vários pontos de integração com o IDE que exigem essa versão mais recente.
Addin
O TFRUNS O pacote instala um RStudio IDE Addin, que fornece acesso rápido a funções usadas com frequência no menu Addins:
Observe que você pode usar Ferramentas -> Modifique os atalhos do teclado dentro do RStudio para atribuir um atalho de teclado a um ou mais dos comandos Addin.
Treinamento de fundo
O RStudio v1.1 inclui um painel de terminal ao lado do painel do console. Como as execuções de treinamento podem se tornar bastante longas, geralmente é útil executá -las em segundo plano, a fim de manter o console R livre para outro trabalho. Você pode fazer isso de um terminal da seguinte maneira:
Se você não estiver em execução no RStudio, é claro que pode usar uma janela do terminal do sistema para treinamento em segundo plano.
Relatórios de publicação
O treinamento de visualizações e comparações são documentos HTML que podem ser salvos e compartilhados com outras pessoas. Ao visualizar um relatório no RStudio v1.1, você pode salvar uma cópia do relatório ou publicá -lo em rpubs ou rstudio Join:
Se você não estiver executando dentro do rstudio, pode usar o save_run_view()
e save_run_comparison()
Funções para criar versões HTML independentes dos relatórios de execução.
Gerenciando corridas
Há uma variedade de ferramentas disponíveis para gerenciar a produção de execução de treinamento, incluindo:
Exportando artefatos de execução (por exemplo, modelos salvos).
Copiando e purgando diretórios de execução.
Usando um diretório de execução personalizado para um experimento ou outro conjunto de execuções relacionadas.
O Gerenciando corridas O artigo fornece detalhes adicionais sobre o uso desses recursos.