web-dev-qa-db-fra.com

Enregistrer le graphique Tensorflow pour l'afficher dans Tensorboard sans opérations de résumé

J'ai un graphique Tensorflow assez compliqué que j'aimerais visualiser à des fins d'optimisation. Y a-t-il une fonction que je peux appeler qui enregistrera simplement le graphique pour l'afficher dans Tensorboard sans avoir besoin d'annoter des variables?

J'ai essayé ceci:

merged = tf.merge_all_summaries()
writer = tf.train.SummaryWriter("/Users/Name/Desktop/tf_logs", session.graph_def)

Mais aucune sortie n'a été produite. Cela utilise la roue 0.6.

Cela semble être lié: la visualisation du graphique ne s'affiche pas dans le tensorboard pour le modèle seq2seq

17
jstaker7

Pour plus d'efficacité, le tf.train.SummaryWriter se connecte de manière asynchrone sur le disque. Pour vous assurer que le graphique apparaît dans le journal, vous devez appeler close() ou flush() sur le rédacteur avant la fermeture du programme.

17
mrry

Vous pouvez également vider le graphique en tant que protobuf GraphDef et le charger directement dans TensorBoard. Vous pouvez le faire sans démarrer de session ni exécuter le modèle.

## ... create graph ...
>>> graph_def = tf.get_default_graph().as_graph_def()
>>> graphpb_txt = str(graph_def)
>>> with open('graphpb.txt', 'w') as f: f.write(graphpb_txt)

Cela produira un fichier qui ressemble à ceci, selon les spécificités de votre modèle.

node {
  name: "W"
  op: "Const"
  attr {
    key: "dtype"
    value {
      type: DT_FLOAT
    }
  }
...
version 1

Dans TensorBoard, vous pouvez ensuite utiliser le bouton "Télécharger" pour le charger à partir du disque.

16
Kevin Robinson

Cela a fonctionné pour moi:

graph = tf.Graph()
with graph.as_default():
    ... build graph (without annotations) ...
writer = tf.summary.FileWriter(logdir='logdir', graph=graph)
writer.flush()

Le graphique est chargé automatiquement lors du lancement de tensorboard avec "--logdir = logdir /". Aucun bouton "upload" nécessaire.

10
Joachim Wagner

Pour plus de clarté, voici comment j'ai utilisé la méthode .flush() et résolu le problème:

Initialisez le rédacteur avec:

writer = tf.train.SummaryWriter("/home/rob/Dropbox/ConvNets/tf/log_tb", sess.graph_def)

et utiliser l'écrivain avec:

writer.add_summary(summary_str, i)
    writer.flush()
4
Rob Romijnders

Rien n'a fonctionné pour moi, sauf cela

# Helper for Converting Frozen graph from Disk to TF serving compatible Model
def get_graph_def_from_file(graph_filepath):
  tf.reset_default_graph()
  with ops.Graph().as_default():
    with tf.gfile.GFile(graph_filepath, 'rb') as f:
      graph_def = tf.GraphDef()
      graph_def.ParseFromString(f.read())
      return graph_def

#let us get the output nodes from the graph
graph_def =get_graph_def_from_file('/coding/ssd_inception_v2_coco_2018_01_28/frozen_inference_graph.pb')

with tf.Session(graph=tf.Graph()) as session:
    tf.import_graph_def(graph_def, name='')
    writer = tf.summary.FileWriter(logdir='/coding/log_tb/1', graph=session.graph)
    writer.flush()

Puis en utilisant TB travaillé

#ssh -L 6006:127.0.0.1:6006 root@<remoteip> # for tensor board - in your local machine type 127.0.0.1
!tensorboard --logdir '/coding/log_tb/1'
0
Alex Punnen