Posso usare Tensorboard con Google Colab?

C’è un modo per usare Tensorboard quando si allena un modello Tensorflow su Google Colab?

Attualmente utilizzo ngrok per tunnelare il traffico a localhost.
Un esempio di colab può essere trovato qui .

Questi sono i passaggi (i frammenti di codice rappresentano celle di tipo “codice” in colab):

  1. Ottieni TensorBoard in esecuzione in background.
    Ispirato da questa risposta .

    LOG_DIR = '/tmp/log' get_ipython().system_raw( 'tensorboard --logdir {} --host 0.0.0.0 --port 6006 &' .format(LOG_DIR) ) 
  2. Scarica e decomprimi ngrok .
    Sostituisci il link passato a wget con il link di download corretto per il tuo sistema operativo.

     ! wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip ! unzip ngrok-stable-linux-amd64.zip 
  3. Avvia il processo di background di ngrok …

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

    … e recupera l’URL pubblico. fonte

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

Ecco come puoi visualizzare i tuoi modelli in linea su Google Colab. Di seguito è riportato un esempio molto semplice che mostra un segnaposto:

 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 = ""%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 = """   
""".format(data=repr(str(strip_def)), id='graph'+str(np.random.rand())) iframe = """ """.format(code.replace('"', '"')) 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)

Al momento, non puoi eseguire un servizio Tensorboard su Google Colab come lo esegui localmente. Inoltre, non puoi esportare l’intero log nel tuo Drive tramite qualcosa come summary_writer = tf.summary.FileWriter('./logs', graph_def=sess.graph_def) modo che tu possa quindi scaricarlo e guardarlo localmente.

Ecco un modo più semplice per eseguire lo stesso metodo di tunneling ngrok su Google Colab.

 !pip install tensorboardcolab 

poi,

 from tensorboardcolab import TensorBoardColab, TensorBoardColabCallback tbc=TensorBoardColab() 

Supponendo che stai usando Keras:

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

Puoi leggere il post originale qui .