Ver en TensorFlow.org | Ejecutar en Google Colab | Ver fuente en GitHub | Descargar cuaderno |
TensorBoard se puede utilizar directamente en las experiencias portátiles tales como Colab y Jupyter . Esto puede ser útil para compartir resultados, integrar TensorBoard en flujos de trabajo existentes y usar TensorBoard sin instalar nada localmente.
Configuración
Comience instalando TF 2.0 y cargando la extensión para computadora portátil TensorBoard:
Para los usuarios Jupyter: Si ha instalado Jupyter y TensorBoard en la misma virtualenv, entonces usted debe ser bueno para ir. Si está utilizando una configuración más complicada, como una instalación Jupyter global y granos para diferentes entornos CONDA / virtualenv, entonces debe asegurarse de que el tensorboard
binario está en su PATH
dentro del contexto portátil Jupyter. Una forma de hacerlo es modificar el kernel_spec
anteponer el entorno de bin
directorio para PATH
, tal como se describe aquí .
Para los usuarios de Docker: Si estás ejecutando un estibador imagen del servidor Notebook Jupyter utilizando TensorFlow de noche , es necesario exponer no sólo el puerto de la portátil, pero el puerto de la 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 el -p 6006
es el puerto por defecto de TensorBoard. Esto le asignará un puerto para que ejecute una instancia de TensorBoard. Para tener instancias concurrentes, es necesario asignar más puertos. Además, pasar --bind_all
a %tensorboard
para exponer el puerto exterior del contenedor.
# Load the TensorBoard notebook extension
%load_ext tensorboard
Importa TensorFlow, datetime y os:
import tensorflow as tf
import datetime, os
TensorBoard en cuadernos
Descargar el FashionMNIST conjunto de datos y reduce la escala:
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')
])
Entrena el modelo con Keras y la devolución de llamada de 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
Comience TensorBoard dentro del cuaderno usando magias :
%tensorboard --logdir logs
Ahora puede ver paneles como escalares, gráficos, histogramas y otros. Algunos paneles aún no están disponibles en Colab (como el complemento de perfil).
El %tensorboard
magia tiene exactamente el mismo formato que la línea de comandos de invocación TensorBoard, pero con un %
a firmar delante de ella.
También puedes iniciar TensorBoard antes de entrenar para monitorearlo en progreso:
%tensorboard --logdir logs
El mismo backend de TensorBoard se reutiliza al emitir el mismo comando. Si se eligiera un directorio de registros diferente, se abriría una nueva instancia de TensorBoard. Los puertos se gestionan automáticamente.
Comience a entrenar un nuevo modelo y observe cómo TensorBoard se actualiza automáticamente cada 30 segundos o actualícelo con el botón en la parte 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
Se pueden utilizar los tensorboard.notebook
APIs para un control poco más:
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)