Puis-je utiliser Tensorboard avec Google Colab?

y a-t-il un moyen d'utiliser Tensorboard lors de la formation d'un modèle Tensorflow sur Google Colab ?

18
demandé sur ociule 2017-12-14 20:14:36

3 réponses

j'utilise actuellement ngrok à la circulation en tunnel jusqu'à localhost.

Un exemple de colab peut être trouvé ici.

ce sont les étapes (les extraits de code représentent les cellules de type "code" en colab):

  1. obtenir TensorBoard en cours d'exécution dans le fond.

    Inspiré par cette réponse.

    LOG_DIR = '/tmp/log'
    get_ipython().system_raw(
        'tensorboard --logdir {} --host 0.0.0.0 --port 6006 &'
        .format(LOG_DIR)
    )
    
  2. Téléchargez et décompressez ngrok.

    remplacer le lien passé à wget avec le lien de téléchargement correct pour votre système D'exploitation.

    ! wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip
    ! unzip ngrok-stable-linux-amd64.zip
    
  3. lancement du processus ngrok background...

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

    ...et de récupérer l'url publique. Source

    ! curl -s http://localhost:4040/api/tunnels | python3 -c \
        "import sys, json; print(json.load(sys.stdin)['tunnels'][0]['public_url'])"
    
36
répondu Joppe Geluykens 2018-01-26 19:46:24
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)

Actuellement, vous ne pouvez pas exécuter un service Tensorboard sur Google Colab de la façon dont vous l'exécutez localement. En outre, vous ne pouvez pas exporter votre log entier à votre lecteur via quelque chose comme summary_writer = tf.summary.FileWriter('./logs', graph_def=sess.graph_def) pour que vous puissiez ensuite le télécharger et le regarder localement.

4
répondu JMA 2017-12-14 21:29:54

voici un moyen plus facile de faire la même méthode de tunneling ngrok sur Google Colab.

!pip install tensorboardcolab

ensuite,

from tensorboardcolab import TensorBoardColab, TensorBoardColabCallback

tbc=TensorBoardColab()

en Supposant que vous utilisez Keras:

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

Vous pouvez lire le post original ici.

1
répondu Keshan 2018-09-02 05:50:58