Se usó la API de Cloud Translation para traducir esta página.
Switch to English

Uso de TensorBoard en cuadernos

Ver en TensorFlow.org Ejecutar en Google Colab Ver código fuente en GitHub

TensorBoard se puede usar directamente en experiencias de notebook como Colab y Jupyter . Esto puede ser útil para compartir resultados, integrar TensorBoard en los flujos de trabajo existentes y usar TensorBoard sin instalar nada localmente.

Preparar

Comience instalando TF 2.0 y cargando la extensión del portátil TensorBoard:

Para usuarios de Jupyter: si ha instalado Jupyter y TensorBoard en el mismo virtualenv, entonces debería estar listo. Si está utilizando una configuración más complicada, como una instalación global de Jupyter y núcleos para diferentes entornos Conda / virtualenv, entonces debe asegurarse de que el binario del tensorboard esté en su PATH dentro del contexto del cuaderno Jupyter. Una forma de hacerlo es modificar kernel_spec para kernel_spec el directorio bin del entorno a PATH , como se describe aquí .

En caso de que esté ejecutando una imagen Docker del servidor Jupyter Notebook usando TensorFlow's todas las noches , es necesario exponer no solo el puerto de la notebook, sino también el puerto de TensorBoard.

Por lo tanto, ejecute el contenedor con el siguiente comando:

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

donde -p 6006 es el puerto predeterminado de TensorBoard. Esto asignará un puerto para que pueda ejecutar una instancia de TensorBoard. Para tener instancias concurrentes, es necesario asignar más puertos.

 # Load the TensorBoard notebook extension
%load_ext tensorboard
 

Importar TensorFlow, datetime y os:

 import tensorflow as tf
import datetime, os
 

TensorBoard en cuadernos

Descargue el conjunto de datos FashionMNIST y escale :

 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

Crea un modelo muy simple:

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

Entrene al modelo con Keras y la devolución de llamada 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

Inicie TensorBoard dentro del cuaderno usando magia :

 %tensorboard --logdir logs
 

Ahora puede ver paneles como escalares, gráficos, histogramas y otros. Algunos paneles no están disponibles todavía en Colab (como el complemento de perfil).

La magia de %tensorboard tiene exactamente el mismo formato que la invocación de línea de comando de TensorBoard, pero con un signo % delante de ella.

También puede iniciar TensorBoard antes de entrenar para monitorearlo en progreso:

 %tensorboard --logdir logs
 

El mismo backend de TensorBoard se reutiliza emitiendo el mismo comando. Si se elige un directorio de registros diferente, se abrirá una nueva instancia de TensorBoard. Los puertos se gestionan automáticamente.

Comience a entrenar un nuevo modelo y vea cómo TensorBoard se actualiza automáticamente cada 30 segundos o actualícelo con el botón en la esquina superior derecha:

 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

Puede usar las API de tensorboard.notebook para tener un poco más de control:

 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)