Ajuda a proteger a Grande Barreira de Corais com TensorFlow em Kaggle Junte Desafio

Usando TensorBoard em Notebooks

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

TensorBoard pode ser usado diretamente dentro experiências de notebook, como Colab e Jupyter . Isso pode ser útil para compartilhar resultados, integrar o TensorBoard em fluxos de trabalho existentes e usar o TensorBoard sem instalar nada localmente.

Configurar

Comece instalando o TF 2.0 e carregando a extensão do notebook TensorBoard:

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 .

Para usuários Docker: Você está 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. Portanto, execute o contêiner com o seguinte comando:

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

onde o -p 6006 é a porta padrão de TensorBoard. Isso alocará uma porta para você executar uma instância do TensorBoard. Para ter instâncias simultâneas, é necessário alocar mais portas. Além disso, passar --bind_all a %tensorboard para expor a porta do lado de fora do recipiente.

# Load the TensorBoard notebook extension
%load_ext tensorboard

Importe TensorFlow, data e hora e sistema operacional:

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

Crie 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')
  ])

Treine o modelo usando Keras e o retorno de chamada 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 painéis como escalares, gráficos, histogramas e outros. Alguns painéis ainda não estão disponíveis no Colab (como o plug-in de 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 o TensorBoard antes do treinamento para monitorá-lo em andamento:

%tensorboard --logdir logs

O mesmo back-end do TensorBoard é reutilizado com a emissão do mesmo comando. Se um diretório de registros diferente for escolhido, uma nova instância do TensorBoard será aberta. As portas são gerenciadas automaticamente.

Comece a treinar um novo modelo e observe o TensorBoard atualizar automaticamente a cada 30 segundos ou atualize-o 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)