google colaboratory colab tensorflow tensorboard google-colaboratory

tensorflow - google colaboratory tensorboard



¿Puedo usar TensorBoard con Google Colab? (12)

¿Hay alguna forma de usar TensorBoard al entrenar un modelo TensorFlow en Google Colab?


Aquí es cómo puede mostrar sus modelos en línea en Google Colab. A continuación se muestra un ejemplo muy simple que muestra un marcador de posición:

from IPython.display import clear_output, Image, display, HTML import tensorflow as tf import numpy as np from google.colab import files def strip_consts(graph_def, max_const_size=32): """Strip large constant values from graph_def.""" strip_def = tf.GraphDef() for n0 in graph_def.node: n = strip_def.node.add() n.MergeFrom(n0) if n.op == ''Const'': tensor = n.attr[''value''].tensor size = len(tensor.tensor_content) if size > max_const_size: tensor.tensor_content = "<stripped %d bytes>"%size return strip_def def show_graph(graph_def, max_const_size=32): """Visualize TensorFlow graph.""" if hasattr(graph_def, ''as_graph_def''): graph_def = graph_def.as_graph_def() strip_def = strip_consts(graph_def, max_const_size=max_const_size) code = """ <script> function load() {{ document.getElementById("{id}").pbtxt = {data}; }} </script> <link rel="import" href="https://tensorboard.appspot.com/tf-graph-basic.build.html" onload=load()> <div style="height:600px"> <tf-graph-basic id="{id}"></tf-graph-basic> </div> """.format(data=repr(str(strip_def)), id=''graph''+str(np.random.rand())) iframe = """ <iframe seamless style="width:1200px;height:620px;border:0" srcdoc="{}"></iframe> """.format(code.replace(''"'', ''&quot;'')) display(HTML(iframe)) """Create a sample tensor""" sample_placeholder= tf.placeholder(dtype=tf.float32) """Show it""" graph_def = tf.get_default_graph().as_graph_def() show_graph(graph_def)

Actualmente, no puede ejecutar un servicio de Tensorboard en Google Colab de la forma en que lo ejecuta localmente. Además, no puede exportar todo su registro a su Drive a través de algo como summary_writer = tf.summary.FileWriter(''./logs'', graph_def=sess.graph_def) para que luego pueda descargarlo y mirarlo localmente.


Aquí hay una manera más fácil de hacer el mismo método de túnel ngrok en Google Colab.

!pip install tensorboardcolab

entonces,

from tensorboardcolab import TensorBoardColab, TensorBoardColabCallback tbc=TensorBoardColab()

Suponiendo que está usando Keras:

model.fit(......,callbacks=[TensorBoardColabCallback(tbc)])

Puedes leer la publicación original here .


Hago uso de la copia de seguridad y sincronización de Google Drive https://www.google.com/drive/download/backup-and-sync/ . Los archivos de eventos, que se guardan de forma periódica en mi unidad de Google durante el entrenamiento, se sincronizan automáticamente con una carpeta en mi propia computadora. Llamemos a esta carpeta logs . Para acceder a las visualizaciones en el tensorboard, abro el símbolo del sistema, navego a la carpeta sincronizada de Google Drive y tensorboard --logdir=logs : tensorboard --logdir=logs .

Entonces, al sincronizar automáticamente mi disco con mi computadora (usando copia de seguridad y sincronización), puedo usar el tensorboard como si estuviera entrenando en mi propia computadora.

Editar: Aquí hay un cuaderno que puede ser útil. https://colab.research.google.com/gist/MartijnCa/961c5f4c774930f4bdd32d51829da6f6/tensorboard-with-google-drive-backup-and-sync.ipynb


Hay una solución alternativa, pero tenemos que usar la vista previa TFv2.0. Entonces, si no tiene problemas con la migración, intente esto:

instale tfv2.0 para GPU o CPU (TPU aún no disponible)

UPC
tf-nightly-2.0-preview
GPU
tf-nightly-gpu-2.0-preview

%%capture !pip install -q tf-nightly-gpu-2.0-preview # Load the TensorBoard notebook extension %load_ext tensorboard.notebook

importa TensorBoard como de costumbre:

from tensorflow.keras.callbacks import TensorBoard

Limpie o cree una carpeta donde guardar los registros (ejecute estas líneas antes de ejecutar el fit() entrenamiento fit() )

# Clear any logs from previous runs import time !rm -R ./logs/ # rf log_dir="logs/fit/{}".format(time.strftime("%Y%m%d-%H%M%S", time.gmtime())) tensorboard = TensorBoard(log_dir=log_dir, histogram_freq=1)

Diviértete con TensorBoard! :)

%tensorboard --logdir logs/fit

Here el cuaderno oficial de colab y el repo en github

Nueva versión alfa de TFv2.0:

UPC
!pip install -q tensorflow==2.0.0-alpha0 GPU
!pip install -q tensorflow-gpu==2.0.0-alpha0


Intenté pero no obtuve el resultado, pero cuando se usó de la siguiente manera, obtuve los resultados

import tensorboardcolab as tb tbc = tb.TensorBoardColab()

después de esto, abra el enlace desde la salida.

import tensorflow as tf import numpy as np

Crear explícitamente un objeto Graph

graph = tf.Graph() with graph.as_default()

Ejemplo completo:

with tf.name_scope("variables"): # Variable to keep track of how many times the graph has been run global_step = tf.Variable(0, dtype=tf.int32, name="global_step") # Increments the above `global_step` Variable, should be run whenever the graph is run increment_step = global_step.assign_add(1) # Variable that keeps track of previous output value: previous_value = tf.Variable(0.0, dtype=tf.float32, name="previous_value") # Primary transformation Operations with tf.name_scope("exercise_transformation"): # Separate input layer with tf.name_scope("input"): # Create input placeholder- takes in a Vector a = tf.placeholder(tf.float32, shape=[None], name="input_placeholder_a") # Separate middle layer with tf.name_scope("intermediate_layer"): b = tf.reduce_prod(a, name="product_b") c = tf.reduce_sum(a, name="sum_c") # Separate output layer with tf.name_scope("output"): d = tf.add(b, c, name="add_d") output = tf.subtract(d, previous_value, name="output") update_prev = previous_value.assign(output) # Summary Operations with tf.name_scope("summaries"): tf.summary.scalar(''output'', output) # Creates summary for output node tf.summary.scalar(''product of inputs'', b, ) tf.summary.scalar(''sum of inputs'', c) # Global Variables and Operations with tf.name_scope("global_ops"): # Initialization Op init = tf.initialize_all_variables() # Collect all summary Ops in graph merged_summaries = tf.summary.merge_all() # Start a Session, using the explicitly created Graph sess = tf.Session(graph=graph) # Open a SummaryWriter to save summaries writer = tf.summary.FileWriter(''./Graph'', sess.graph) # Initialize Variables sess.run(init) def run_graph(input_tensor): """ Helper function; runs the graph with given input tensor and saves summaries """ feed_dict = {a: input_tensor} output, summary, step = sess.run([update_prev, merged_summaries, increment_step], feed_dict=feed_dict) writer.add_summary(summary, global_step=step) # Run the graph with various inputs run_graph([2,8]) run_graph([3,1,3,3]) run_graph([8]) run_graph([1,2,3]) run_graph([11,4]) run_graph([4,1]) run_graph([7,3,1]) run_graph([6,3]) run_graph([0,2]) run_graph([4,5,6]) # Writes the summaries to disk writer.flush() # Flushes the summaries to disk and closes the SummaryWriter writer.close() # Close the session sess.close() # To start TensorBoard after running this file, execute the following command: # $ tensorboard --logdir=''./improved_graph''


La forma más simple y fácil que he encontrado hasta ahora:

Obtenga el archivo setup_google_colab.py usando wget

!wget https://raw.githubusercontent.com/hse-aml/intro-to- dl/master/setup_google_colab.py -O setup_google_colab.py import setup_google_colab

Para ejecutar el tensorboard en segundo plano, exponga el puerto y haga clic en el enlace.
Supongo que tiene un valor agregado adecuado para visualizar en su resumen y luego combinar todos los resúmenes.

import os os.system("tensorboard --logdir=./logs --host 0.0.0.0 --port 6006 &") setup_google_colab.expose_port_on_colab(6006)

Después de ejecutar las declaraciones anteriores, aparecerá un enlace como:

Open https://a1b2c34d5.ngrok.io to access your 6006 port

Consulte el siguiente git para obtener más ayuda:

https://github.com/MUmarAmanat/MLWithTensorflow/blob/master/colab_tensorboard.ipynb


Para unirse a la respuesta @ solver149, aquí hay un ejemplo simple de cómo usar TensorBoard en google colab

1.Cree el gráfico, por ejemplo:

a = tf.constant(3.0, dtype=tf.float32) b = tf.constant(4.0) total = a + b

2. Instalar Tensorboard

!pip install tensorboardcolab # to install tensorboeadcolab if it does not it not exist

==> Resultado en mi caso:

Requirement already satisfied: tensorboardcolab in /usr/local/lib/python3.6/dist-packages (0.0.22)

3. Úselo :)

Puño de todos los TensorBoard importados de tensorboaedcolab (puede usar import* para importar todo de una vez), luego cree su tensorboeardcolab después de eso adjunte un escritor de esta manera:

from tensorboardcolab import * tbc = TensorBoardColab() # To create a tensorboardcolab object it will automatically creat a link writer = tbc.get_writer() # To create a FileWriter writer.add_graph(tf.get_default_graph()) # add the graph writer.flush()

==> Resultado

Using TensorFlow backend. Wait for 8 seconds... TensorBoard link: http://cf426c39.ngrok.io

4.Compruebe el enlace dado: D

Este ejemplo fue token de la guía TF: TensorBoard .


Sí, definitivamente, usar tensorboard en google colab es bastante fácil. Sigue los siguientes pasos:

1) Cargue la extensión del tensorboard

%load_ext tensorboard.notebook

2) Agregarlo a la devolución de llamada keras

tensorboard_callback = tf.keras.callbacks.TensorBoard(logdir, histogram_freq=1)

3) Iniciar tensorboard

%tensorboard — logdir logs

Espero eso ayude.


TensorBoard funciona con Google Colab y TensorFlow 2.0

!pip install tensorflow==2.0.0-alpha0 %load_ext tensorboard.notebook


TensorBoard para TensorFlow que se ejecuta en Google Colab usando tensorboardcolab. Esto usa ngrok internamente para hacer túneles.

  1. Instalar TensorBoardColab

!pip install tensorboardcolab

  1. Crear un objeto tensorboardcolab

tbc = TensorBoardColab()

Esto crea automáticamente un enlace de TensorBoard que se puede usar. Este Tensorboard está leyendo los datos en ''./Graph''

  1. Cree un FileWriter que apunte a esta ubicación

summary_writer = tbc.get_writer()

La biblioteca tensorboardcolab tiene el método que devuelve el objeto FileWriter apuntando a la ubicación ''./Graph'' anterior.

  1. Comience a agregar información de resumen a los archivos de eventos en la ubicación ''./Graph'' usando el objeto summary_writer

Puede agregar información escalar o datos de gráfico o histograma.

Referencia: https://github.com/taomanwai/tensorboardcolab


Traté de mostrar TensorBoard en Google Colab hoy,

# in case of CPU, you can this line # !pip install -q tf-nightly-2.0-preview # in case of GPU, you can use this line !pip install -q tf-nightly-gpu-2.0-preview # %load_ext tensorboard.notebook # not working on 22 Apr %load_ext tensorboard # you need to use this line instead import tensorflow as tf

''################
hacer entrenamiento
''################

# show tensorboard %tensorboard --logdir logs/fit

Aquí hay un ejemplo real hecho por Google. https://colab.research.google.com/github/tensorflow/tensorboard/blob/master/docs/r2/get_started.ipynb


EDITAR: Probablemente quieras %tensorboard magia oficial de %tensorboard , disponible desde TensorFlow 1.13 en adelante.

Antes de la existencia de la magia %tensorboard , la forma estándar de lograr esto era proxy del tráfico de red a la VM Colab usando ngrok . Un ejemplo de Colab se puede encontrar here .

Estos son los pasos (los fragmentos de código representan celdas de tipo "código" en colab):

  1. Haga que TensorBoard se ejecute en segundo plano.
    Inspirado por esta respuesta .

    LOG_DIR = ''/tmp/log'' get_ipython().system_raw( ''tensorboard --logdir {} --host 0.0.0.0 --port 6006 &'' .format(LOG_DIR) )

  2. Descargar y descomprimir ngrok .
    Reemplace el enlace pasado a wget con el enlace de descarga correcto para su sistema operativo.

    ! wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip ! unzip ngrok-stable-linux-amd64.zip

  3. Iniciar proceso de fondo ngrok ...

    get_ipython().system_raw(''./ngrok http 6006 &'')

    ... y recuperar la url pública. Source

    ! curl -s http://localhost:4040/api/tunnels | python3 -c / "import sys, json; print(json.load(sys.stdin)[''tunnels''][0][''public_url''])"