Gibt es eine Möglichkeit, TensorBoard beim Training eines TensorFlow-Modells in Google Colab zu verwenden?
78
Gibt es eine Möglichkeit, TensorBoard beim Training eines TensorFlow-Modells in Google Colab zu verwenden?
Antworten:
EDIT: Sie möchten wahrscheinlich die offizielle
%tensorboard
Magie ausprobieren, die ab TensorFlow 1.13 verfügbar ist.Vor der Existenz der
%tensorboard
Magie bestand der Standardweg, dies zu erreichen, darin, den Netzwerkverkehr mithilfe von ngrok an die Colab-VM zu übertragen . Ein Colab-Beispiel finden Sie hier .Dies sind die Schritte (die Codefragmente repräsentieren Zellen vom Typ "Code" in colab):
Lassen Sie TensorBoard im Hintergrund laufen.
Inspiriert von dieser Antwort .
LOG_DIR = '/tmp/log' get_ipython().system_raw( 'tensorboard --logdir {} --host 0.0.0.0 --port 6006 &' .format(LOG_DIR) )
Laden Sie ngrok herunter und entpacken Sie es .
Ersetzen Sie den übergebenen Link
wget
durch den richtigen Download-Link für Ihr Betriebssystem.! wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip ! unzip ngrok-stable-linux-amd64.zip
Starten Sie den ngrok-Hintergrundprozess ...
get_ipython().system_raw('./ngrok http 6006 &')
... und öffentliche URL abrufen. Quelle
! curl -s http://localhost:4040/api/tunnels | python3 -c \ "import sys, json; print(json.load(sys.stdin)['tunnels'][0]['public_url'])"
quelle
Viele der Antworten hier sind inzwischen veraltet. Ich bin mir sicher, dass es in ein paar Wochen mein sein wird. Aber zum Zeitpunkt dieses Schreibens musste ich nur diese Codezeilen von colab ausführen. Und Tensorboard öffnete sich ganz gut.
quelle
Hier ist eine einfachere Möglichkeit, dieselbe ngrok-Tunnelmethode in Google Colab durchzuführen.
dann,
from tensorboardcolab import TensorBoardColab, TensorBoardColabCallback tbc=TensorBoardColab()
Angenommen, Sie verwenden Keras:
Sie können die Original - Beitrag lesen Sie hier .
quelle
FailedPreconditionError: Error while reading resource variable conv_dw_8/depthwise_kernel from Container: localhost. This could mean that the variable was uninitialized.
model.add(tf.keras.layers.LSTM(....))
tunmodel.add(keras.layers.LSTM(...))
. Andernfalls kann es zu Fehlermeldungen kommen.TensorBoard für TensorFlow läuft auf Google Colab mit Tensorboardcolab. Dies verwendet ngrok intern zum Tunneln.
!pip install tensorboardcolab
tbc = TensorBoardColab()
Dadurch wird automatisch ein TensorBoard-Link erstellt, der verwendet werden kann. Dieses Tensorboard liest die Daten unter './Graph'.
summary_writer = tbc.get_writer()
Die Tensorboardcolab-Bibliothek verfügt über die Methode, die das FileWriter-Objekt zurückgibt, das auf die Position './Graph' oben zeigt.
Sie können skalare Informationen oder Diagramm- oder Histogrammdaten hinzufügen.
Referenz: https://github.com/taomanwai/tensorboardcolab
quelle
Ich habe versucht, aber nicht das Ergebnis erhalten, aber wenn wie unten verwendet, habe ich die Ergebnisse erhalten
import tensorboardcolab as tb tbc = tb.TensorBoardColab()
Danach öffnen Sie den Link von der Ausgabe.
import tensorflow as tf import numpy as np
Erstellen Sie explizit ein Diagrammobjekt
graph = tf.Graph() with graph.as_default()
Vollständiges Beispiel:
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'
quelle
So können Sie Ihre Modelle in Google Colab inline anzeigen. Unten sehen Sie ein sehr einfaches Beispiel, in dem ein Platzhalter angezeigt wird:
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)
Derzeit können Sie einen Tensorboard-Dienst in Google Colab nicht so ausführen, wie Sie ihn lokal ausführen. Außerdem können Sie nicht Ihr gesamtes Protokoll über so etwas auf Ihr Laufwerk exportieren
summary_writer = tf.summary.FileWriter('./logs', graph_def=sess.graph_def)
, um es dann herunterzuladen und lokal anzuzeigen.quelle
Ich verwende die Sicherung von Google Drive und synchronisiere https://www.google.com/drive/download/backup-and-sync/ . Die Ereignisdateien, die während des Trainings vorab auf meinem Google Drive gespeichert werden, werden automatisch mit einem Ordner auf meinem eigenen Computer synchronisiert. Nennen wir diesen Ordner
logs
. Um auf die Visualisierungen in Tensorboard zuzugreifen, öffne ich die Eingabeaufforderung, navigiere zum synchronisierten Google Drive-Ordner und gebe Folgendes ein:tensorboard --logdir=logs
.Durch die automatische Synchronisierung meines Laufwerks mit meinem Computer (durch Sichern und Synchronisieren) kann ich Tensorboard so verwenden, als würde ich auf meinem eigenen Computer trainieren.
Bearbeiten: Hier ist ein Notizbuch, das hilfreich sein könnte. https://colab.research.google.com/gist/MartijnCa/961c5f4c774930f4bdd32d51829da6f6/tensorboard-with-google-drive-backup-and-sync.ipynb
quelle
os.chdir('/content/drive/My Drive')
. Können Sie weiter erklären, wie Sie auf Ihren synchronisierten Computer zugreifen?2.0 Kompatible Antwort : Ja, Sie können Tensorboard in Google Colab verwenden. Hier finden Sie den folgenden Code, der das vollständige Beispiel zeigt.
!pip install tensorflow==2.0 import tensorflow as tf # The function to be traced. @tf.function def my_func(x, y): # A simple hand-rolled layer. return tf.nn.relu(tf.matmul(x, y)) # Set up logging. logdir = './logs/func' writer = tf.summary.create_file_writer(logdir) # Sample data for your function. x = tf.random.uniform((3, 3)) y = tf.random.uniform((3, 3)) # Bracket the function call with # tf.summary.trace_on() and tf.summary.trace_export(). tf.summary.trace_on(graph=True, profiler=True) # Call only one tf.function when tracing. z = my_func(x, y) with writer.as_default(): tf.summary.trace_export( name="my_func_trace", step=0, profiler_outdir=logdir) %load_ext tensorboard %tensorboard --logdir ./logs/func
Die Arbeitskopie von Google Colab finden Sie unter diesem Link . Weitere Informationen erhalten Sie über diesen Link .
quelle
Laut Dokumentation müssen Sie lediglich Folgendes tun:
%load_ext tensorboard !rm -rf ./logs/ #to delete previous runs %tensorboard --logdir logs/ tensorboard = TensorBoard(log_dir="./logs")
Und nennen Sie es einfach in der Fit-Methode:
model.fit(X_train, y_train, epochs = 1000, callbacks=[tensorboard], validation_data=(X_test, y_test))
Und das sollte dir so etwas geben:
quelle
Ich habe heute versucht, TensorBoard auf Google Colab zu zeigen.
# 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
'#################
trainiere
' ##################
# show tensorboard %tensorboard --logdir logs/fit
Hier ist ein aktuelles Beispiel von Google. https://colab.research.google.com/github/tensorflow/tensorboard/blob/master/docs/r2/get_started.ipynb
quelle
Ja, die Verwendung von Tensorboard in Google Colab ist auf jeden Fall recht einfach. Befolgen Sie die folgenden Schritte:
1) Laden Sie die Tensorboard-Verlängerung
2) Fügen Sie es zum Keras-Rückruf hinzu
tensorboard_callback = tf.keras.callbacks.TensorBoard(logdir, histogram_freq=1)
3) Tensorboard starten
Ich hoffe es hilft.
quelle
Es gibt eine alternative Lösung, aber wir müssen die TFv2.0-Vorschau verwenden. Wenn Sie also keine Probleme mit der Migration haben, versuchen Sie Folgendes:
Installieren Sie tfv2.0 für GPU oder CPU (TPU noch nicht verfügbar).
CPU
tf-nightly-2.0-Vorschau
GPU
tf-nightly-gpu-2.0-Vorschau
%%capture !pip install -q tf-nightly-gpu-2.0-preview # Load the TensorBoard notebook extension # %load_ext tensorboard.notebook # For older versions %load_ext tensorboard
TensorBoard wie gewohnt importieren:
from tensorflow.keras.callbacks import TensorBoard
Bereinigen oder Ordner erstellen, in dem die Protokolle gespeichert werden sollen (führen Sie diese Zeilen aus, bevor Sie das Training ausführen
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)
Viel Spaß mit TensorBoard! :) :)
%tensorboard --logdir logs/fit
Hier das offizielle Colab-Notizbuch und das Repo auf Github
Neue TFv2.0 Alpha-Version:
CPU-
!pip install -q tensorflow==2.0.0-alpha0
GPU!pip install -q tensorflow-gpu==2.0.0-alpha0
quelle
Mit dem kürzlich durchgeführten Upgrade von Google Colab können Sie direkt eine Verbindung zu Tensorboard in Google Colab herstellen.
https://medium.com/@today.rafi/tensorboard-in-google-colab-bd49fa554f9b
quelle
Um der Antwort von @ solver149 beizutreten, finden Sie hier ein einfaches Beispiel für die Verwendung von TensorBoard in Google Colab
1.Erstellen Sie das Diagramm, z.
a = tf.constant(3.0, dtype=tf.float32) b = tf.constant(4.0) total = a + b
2. Installieren Sie Tensorboard
!pip install tensorboardcolab # to install tensorboeadcolab if it does not it not exist
==> Ergebnis in meinem Fall:
Requirement already satisfied: tensorboardcolab in /usr/local/lib/python3.6/dist-packages (0.0.22)
3. Benutze es :)
Importieren Sie zunächst TensorBoard aus Tensorboaedcolab (Sie können
import*
damit alles auf einmal importieren) und erstellen Sie anschließend Ihr Tensorboeardcolab. Fügen Sie anschließend einen Writer wie folgt hinzu: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()
==> Ergebnis
Using TensorFlow backend. Wait for 8 seconds... TensorBoard link: http://cf426c39.ngrok.io
4.Überprüfen Sie den angegebenen Link: D.
Dieses Beispiel stammt aus dem TF-Handbuch: TensorBoard .
quelle
AttributeError: module 'tensorflow_core.summary' has no attribute 'FileWriter'
TensorBoard funktioniert mit Google Colab und TensorFlow 2.0
!pip install tensorflow==2.0.0-alpha0 %load_ext tensorboard.notebook
quelle
Die Verwendung von summary_writer zum Schreiben eines Protokolls in jeder Epoche in einem Ordner und das Ausführen der folgenden Magie hat bei mir funktioniert.
quelle
Einfacher und einfachster Weg, den ich bisher gefunden habe:
Rufen Sie die Datei setup_google_colab.py mit wget ab
!wget https://raw.githubusercontent.com/hse-aml/intro-to- dl/master/setup_google_colab.py -O setup_google_colab.py import setup_google_colab
Um Tensorboard im Hintergrund auszuführen, legen Sie den Port frei und klicken Sie auf den Link.
Ich gehe davon aus, dass Sie einen angemessenen Mehrwert haben, um ihn in Ihrer Zusammenfassung zu visualisieren und dann alle Zusammenfassungen zusammenzuführen.
import os os.system("tensorboard --logdir=./logs --host 0.0.0.0 --port 6006 &") setup_google_colab.expose_port_on_colab(6006)
Nachdem Sie die obigen Anweisungen ausgeführt haben, werden Sie mit einem Link wie folgt aufgefordert:
Open https://a1b2c34d5.ngrok.io to access your 6006 port
Weitere Hilfe finden Sie im folgenden Git:
quelle
AttributeError: module 'setup_google_colab' has no attribute 'expose_port_on_colab'
Ich benutze Tensorflow == 1.15.
funktioniert bei mir.
ist der Pfad meiner Protokolle in Google Drive.
quelle
Versuchen Sie das, es funktioniert für mich
%load_ext tensorboard import datetime 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])
quelle