J'ai mis à jour Tensorflow 2.0 et il n'y a pas de tf.summary.FileWriter("tf_graphs", sess.graph)
. Je regardais à travers d'autres questions StackOverflow à ce sujet et ils ont dit d'utiliser tf.compat.v1.summary etc
Il doit sûrement y avoir un moyen de représenter graphiquement et de visualiser un modèle tf.keras dans Tensorflow version 2. De quoi s'agit-il? Je recherche une sortie de tensorboard comme celle ci-dessous. Merci!
4 Réponses :
Selon la documentation , vous pouvez utiliser Tensorboard pour visualiser des graphiques une fois que votre modèle a été formé.
Tout d'abord, définissez votre modèle et exécutez-le. Ensuite, ouvrez Tensorboard et passez à l'onglet Graphique.
Exemple compilable minimal
Cet exemple est tiré de la documentation. Tout d'abord, définissez votre modèle et vos données.
%tensorboard --logdir logs
Ensuite, entraînez votre modèle. Ici, vous devrez définir un rappel que Tensorboard utilisera pour visualiser les statistiques et les graphiques.
# Define the Keras TensorBoard callback. logdir="logs/fit/" + datetime.now().strftime("%Y%m%d-%H%M%S") tensorboard_callback = keras.callbacks.TensorBoard(log_dir=logdir) # Train the model. model.fit( train_images, train_labels, batch_size=64, epochs=5, callbacks=[tensorboard_callback])
Après l'entraînement, dans votre cahier, exécutez
# Relevant imports. %load_ext tensorboard from __future__ import absolute_import from __future__ import division from __future__ import print_function from datetime import datetime from packaging import version import tensorflow as tf from tensorflow import keras # Define the model. model = keras.models.Sequential([ keras.layers.Flatten(input_shape=(28, 28)), keras.layers.Dense(32, activation='relu'), keras.layers.Dropout(0.2), keras.layers.Dense(10, activation='softmax') ]) model.compile( optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy']) (train_images, train_labels), _ = keras.datasets.fashion_mnist.load_data() train_images = train_images / 255.0
Et passez à l'onglet Graphique dans la barre de navigation:
Vous verrez un graphique qui ressemble beaucoup à ceci:
Existe-t-il un moyen de le visualiser sans l'entraîner au préalable?
@ColinSteidtmann J'ai examiné plusieurs problèmes GitHub et le consensus semble être que cela n'est pas pris en charge pour les modèles keras pour le moment en raison de l'exécution rapide activée par défaut.
Merde, merci pour la recherche. Je sais que c'est toujours en version bêta, donc je serai juste patient.
Ce n'est pas tout à fait correct, vous pouvez convertir en graphique et visualiser le modèle sans l'entraîner. Voir ma réponse
@nessuno, vous devez toujours exécuter le modèle avec une certaine quantité de données. Certes, il s'agit d'un seul échantillon, cela me semble un peu piraté. J'ai cherché pendant des heures et je n'ai rien trouvé de plus simple que cela et j'ai abandonné.
Oui c'est vrai. L'exécution du modèle est nécessaire car le graphique est construit en traçant l'exécution, mais il n'est pas nécessaire de former le modèle, vous pouvez simplement utiliser tf.function
et exécuter la passe avant (si vous êtes intéressé à ne voir que cette partie, et pas le graphique de la boucle d'entraînement)
Vous pouvez visualiser le graphique de n'importe tf.function
fonction décorée tf.function
, mais vous devez d'abord tracer son exécution.
Visualiser le graphe d'un modèle Keras signifie visualiser sa méthode d' call
.
Par défaut, cette méthode n'est pas tf.function
décorée et vous devez donc tf.function
l'appel de modèle dans une fonction correctement décorée et l'exécuter.
import tensorflow as tf model = tf.keras.Sequential( [ tf.keras.layers.Flatten(input_shape=(28, 28)), tf.keras.layers.Dense(32, activation="relu"), tf.keras.layers.Dropout(0.2), tf.keras.layers.Dense(10, activation="softmax"), ] ) @tf.function def traceme(x): return model(x) logdir = "log" writer = tf.summary.create_file_writer(logdir) tf.summary.trace_on(graph=True, profiler=True) # Forward pass traceme(tf.zeros((1, 28, 28, 1))) with writer.as_default(): tf.summary.trace_export(name="model_trace", step=0, profiler_outdir=logdir)
C'est une excellente réponse, merci! Je ne peux cependant toujours pas accéder aux informations d'exécution dans TensorBoard. Oui, le profileur est défini sur true. Une idée?
Le profilage lui-même. Tensorboard n'affiche aucune information d'exécution, par exemple la durée d'exécution des nœuds de mon graphique ou la consommation de mémoire. Si cela vous est montré, il y a peut-être un autre problème pour moi.
Ma seule suggestion est de lire ce guide tensorflow.org/tensorboard/tensorboard_profiling_keras et d'utiliser Chromium / Chrome (oui, les autres navigateurs ne peuvent pas être utilisés car le profil utilise certaines parties de chrome)
ProfilerNotRunningError: Cannot stop profiling. No profiler is running.
sur Windows. Une aide s'il vous plaît?
Voici ce qui fonctionne pour moi en ce moment (TF 2.0.0), basé sur le code tf.keras.callbacks.TensorBoard :
# After model has been compiled from tensorflow.python.ops import summary_ops_v2 from tensorflow.python.keras.backend import get_graph tb_path = '/tmp/tensorboard/' tb_writer = tf.summary.create_file_writer(tb_path) with tb_writer.as_default(): if not model.run_eagerly: summary_ops_v2.graph(get_graph(), step=0)
Qu'est-ce que tb_writer
?
Un objet tf.summary.SummaryWriter. Edité le code pour le définir
Une autre option consiste à utiliser ce site Web: https://lutzroeder.github.io/netron/
qui génèrent un graphe avec un fichier .h5 ou .tflite.
Le dépôt github sur lequel il est basé peut être trouvé ici: https://github.com/lutzroeder/netron