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 ?
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):
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) )
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
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'])"
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('"', '"'))
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.
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.