Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
tensorflow
GitHub Repository: tensorflow/docs-l10n
Path: blob/master/site/es-419/tensorboard/tensorboard_in_notebooks.ipynb
25115 views
Kernel: Python 3
#@title Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # https://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License.

TensorBoard puede utilizarse directamente dentro de experiencias de blocs de notas como Colab y Jupyter. Esto puede ser útil para compartir resultados, integrar TensorBoard en flujos de trabajo existentes y utilizar TensorBoard sin instalar nada localmente.

Preparación

Comience instalando TF 2.0 y cargando la extensión del bloc de notas de 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 kernels para diferentes entornos Conda/virtualenv, entonces debe asegurarse de que el binario tensorboard está en su PATH dentro del contexto del bloc de notas de Jupyter. Una forma de hacerlo es modificar el kernel_spec para anteponer el directorio bin del entorno al PATH, como se describe aquí.

Para usuarios de Docker: En caso de que esté ejecutando una imagen Docker del servidor Jupyter Notebook utilizando la nightly de TensorFlow, es necesario exponer no sólo el puerto del bloc de notas, sino también el puerto del TensorBoard. Así, ejecutará 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 predeterminado de TensorBoard. Esto le asignará un puerto para ejecutar una instancia de TensorBoard. Para tener instancias simultáneas, es necesario asignar más puertos. Además, pase --bind_all a %tensorboard para exponer el puerto fuera del contenedor.

# Load the TensorBoard notebook extension %load_ext tensorboard

Importar TensorFlow, datetime y os:

import tensorflow as tf import datetime, os

TensorBoard en blocs de notas

Descargue el conjunto de datos FashionMNIST y escálelo:

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

Cree un modelo muy sencillo:

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

Entrene el modelo utilizando Keras y la retrollamada 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

Inicie TensorBoard dentro del bloc de notas utilizando magics:

%tensorboard --logdir logs

Ahora puede ver paneles de control como Series temporales, Gráficos, Distribuciones y otros. Algunos paneles aún no están disponibles en Colab (como el complemento de perfil).

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

También puede iniciar TensorBoard antes del entrenamiento para supervisarlo durante el proceso:

%tensorboard --logdir logs

Se reutiliza el mismo backend de TensorBoard emitiendo el mismo comando. Si se eligiera un directorio de registros diferente, se abriría una nueva instancia de TensorBoard. Los puertos se administran 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 de 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

Puede utilizar las API 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)