Esta página foi traduzida pela API Cloud Translation.
Switch to English

Usando TensorBoard em Notebooks

Ver TensorFlow.org Executar no Google Colab Ver fonte no GitHub

TensorBoard pode ser usado diretamente dentro experiências de notebook, como Colab e Jupyter . Isso pode ser útil para a partilha de resultados, integrando TensorBoard em fluxos de trabalho existentes, e usando TensorBoard sem instalar nada no local.

Configuração

Comece por instalar TF 2.0 e carregar a extensão TensorBoard notebook:

Para usuários Jupyter: Se você instalou Jupyter e TensorBoard na mesma virtualenv, então você deve ser bom para ir. Se você estiver usando uma configuração mais complicada, como uma instalação e kernels mundial Jupyter para diferentes Conda / virtualenv ambientes, então você deve garantir que o tensorboard binário está no seu PATH dentro do contexto notebook Jupyter. Uma maneira de fazer isso é modificar o kernel_spec prefixar do ambiente bin diretório para PATH , conforme descrito aqui .

No caso de você estiver executando um Docker imagem do servidor Notebook Jupyter usando de TensorFlow noturno , é necessário expor não só a porta do notebook, mas a porta do TensorBoard.

Assim, corre o recipiente com o comando seguinte:

 docker run -it -p 8888:8888 -p 6006:6006 \
tensorflow/tensorflow:nightly-py3-jupyter 
 

onde o -p 6006 é a porta padrão de TensorBoard. Isto irá alocar uma porta para que você possa executar uma instância TensorBoard. Para ter instâncias simultâneas, é necessário alocar mais portas.

 # Load the TensorBoard notebook extension
%load_ext tensorboard
 

Import TensorFlow, data e hora, e os:

 import tensorflow as tf
import datetime, os
 

TensorBoard em notebooks

Baixe o FashionMNIST conjunto de dados e escalá-lo:

 fashion_mnist = tf.keras.datasets.fashion_mnist

(x_train, y_train),(x_test, y_test) = fashion_mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
 
Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/train-labels-idx1-ubyte.gz
32768/29515 [=================================] - 0s 0us/step
Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/train-images-idx3-ubyte.gz
26427392/26421880 [==============================] - 0s 0us/step
Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/t10k-labels-idx1-ubyte.gz
8192/5148 [===============================================] - 0s 0us/step
Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/t10k-images-idx3-ubyte.gz
4423680/4422102 [==============================] - 0s 0us/step

Criar um modelo muito simples:

 def create_model():
  return tf.keras.models.Sequential([
    tf.keras.layers.Flatten(input_shape=(28, 28)),
    tf.keras.layers.Dense(512, activation='relu'),
    tf.keras.layers.Dropout(0.2),
    tf.keras.layers.Dense(10, activation='softmax')
  ])
 

Treinar o modelo usando Keras eo retorno TensorBoard:

 def train_model():
  
  model = create_model()
  model.compile(optimizer='adam',
                loss='sparse_categorical_crossentropy',
                metrics=['accuracy'])

  logdir = os.path.join("logs", datetime.datetime.now().strftime("%Y%m%d-%H%M%S"))
  tensorboard_callback = tf.keras.callbacks.TensorBoard(logdir, histogram_freq=1)

  model.fit(x=x_train, 
            y=y_train, 
            epochs=5, 
            validation_data=(x_test, y_test), 
            callbacks=[tensorboard_callback])

train_model()
 
Train on 60000 samples, validate on 10000 samples
Epoch 1/5
60000/60000 [==============================] - 11s 182us/sample - loss: 0.4976 - accuracy: 0.8204 - val_loss: 0.4143 - val_accuracy: 0.8538
Epoch 2/5
60000/60000 [==============================] - 10s 174us/sample - loss: 0.3845 - accuracy: 0.8588 - val_loss: 0.3855 - val_accuracy: 0.8626
Epoch 3/5
60000/60000 [==============================] - 10s 175us/sample - loss: 0.3513 - accuracy: 0.8705 - val_loss: 0.3740 - val_accuracy: 0.8607
Epoch 4/5
60000/60000 [==============================] - 11s 177us/sample - loss: 0.3287 - accuracy: 0.8793 - val_loss: 0.3596 - val_accuracy: 0.8719
Epoch 5/5
60000/60000 [==============================] - 11s 178us/sample - loss: 0.3153 - accuracy: 0.8825 - val_loss: 0.3360 - val_accuracy: 0.8782

Comece TensorBoard dentro do notebook usando magias :

 %tensorboard --logdir logs
 

Agora você pode visualizar dashboards como escalares, gráficos, histogramas e outros. Alguns painéis não estão ainda disponíveis em Colab (como o plugin perfil).

O %tensorboard magia tem exatamente o mesmo formato que a linha chamada de comando TensorBoard, mas com uma % -sign na frente dele.

Você também pode iniciar TensorBoard antes de treinar para monitorá-lo em andamento:

 %tensorboard --logdir logs
 

O mesmo backend TensorBoard é reutilizado, emitindo o mesmo comando. Se um diretório diferentes registros foi escolhido, uma nova instância do TensorBoard seria aberto. Portos são geridos automaticamente.

Começar a treinar um novo modelo e assistir atualização TensorBoard automaticamente a cada 30 segundos ou atualizá-la com o botão no canto superior direito:

 train_model()
 
Train on 60000 samples, validate on 10000 samples
Epoch 1/5
60000/60000 [==============================] - 11s 184us/sample - loss: 0.4968 - accuracy: 0.8223 - val_loss: 0.4216 - val_accuracy: 0.8481
Epoch 2/5
60000/60000 [==============================] - 11s 176us/sample - loss: 0.3847 - accuracy: 0.8587 - val_loss: 0.4056 - val_accuracy: 0.8545
Epoch 3/5
60000/60000 [==============================] - 11s 176us/sample - loss: 0.3495 - accuracy: 0.8727 - val_loss: 0.3600 - val_accuracy: 0.8700
Epoch 4/5
60000/60000 [==============================] - 11s 179us/sample - loss: 0.3282 - accuracy: 0.8795 - val_loss: 0.3636 - val_accuracy: 0.8694
Epoch 5/5
60000/60000 [==============================] - 11s 176us/sample - loss: 0.3115 - accuracy: 0.8839 - val_loss: 0.3438 - val_accuracy: 0.8764

Você pode usar os tensorboard.notebook APIs para um controle de pouco mais:

 from tensorboard import notebook
notebook.list() # View open TensorBoard instances
 
Known TensorBoard instances:

  - port 6006: logdir logs (started 0:00:54 ago; pid 265)

 # Control TensorBoard display. If no port is provided, 
# the most recently launched TensorBoard is used
notebook.display(port=6006, height=1000)