2016-06-08 2 views
0

In meinem TensorFlow-Code habe ich einige Parameter mit einer Logik in meinem Graphen verbunden, aber die entsprechende TensorBoard-Visualisierung kann diese Verbindungen nicht direkt herstellen und zeigt stattdessen nur die Verbindungen zwischen den enthaltenen Bereichen an.Wie stelle ich sicher, dass Verbindungen zwischen meinen Grafikelementen in TensorBoard dargestellt werden?

Insbesondere, ich habe

with tf.name_scope('params_structure'): 
    is_train = tf.placeholder(tf.bool, [], name='is_train') 
    keep_prob_later_param = tf.identity(FLAGS.keep_prob_later, name='keep_prob_later') 
    keep_prob_early_param = tf.identity(FLAGS.keep_prob_early, name='keep_prob_early') 
    keep_prob_input_param = tf.identity(FLAGS.keep_prob_input, name='keep_prob_input') 

with tf.name_scope('structure_logic'): 
    # Note that the summaries for these variables are the values used in training; not for computing stats 
    with tf.name_scope('keep_prob_later_decay'): 
     keep_prob_later_decay = tf.sub(1.0, tf.train.exponential_decay(1 - keep_prob_later_param, global_step, 
                     FLAGS.decay_steps, 
                     FLAGS.dropout_decay_rate, staircase=False)) 
    with tf.name_scope('keep_prob_early_decay'): 
     keep_prob_early_decay = tf.sub(1.0, tf.train.exponential_decay(1 - keep_prob_early_param, global_step, 
                     FLAGS.decay_steps, 
                     FLAGS.dropout_decay_rate, staircase=False)) 
    with tf.name_scope('keep_prob_input_decay'): 
     keep_prob_input_decay = tf.sub(1.0, tf.train.exponential_decay(1 - keep_prob_input_param, global_step, 
                     FLAGS.decay_steps, 
                     FLAGS.dropout_decay_rate, staircase=False)) 
    with tf.name_scope('keep_prob_all'): 
     keep_prob_all = tf.identity(1.0) 

    keep_prob_later = tf.cond(is_train, lambda: keep_prob_later_decay, lambda: keep_prob_all) 
    keep_prob_early = tf.cond(is_train, lambda: keep_prob_early_decay, lambda: keep_prob_all) 
    keep_prob_input = tf.cond(is_train, lambda: keep_prob_input_decay, lambda: keep_prob_all) 

In meiner TensorBoard Visualisierung ich alle diese Elemente zu sehen, wie erwartet, aber die Verbindungen zwischen den keep_prob_..._param s und die entsprechenden keep_prob_..._decay Operationen werden nicht hergestellt. Stattdessen erhalte ich nur die Verbindungen zwischen den enthaltenden Bereiche als Gruppe (zB von params_structure wie unten hervorgehoben, um alle der keep_prob_..._decay Operationen):

enter image description here

Das gleiche gilt für die Verbindung von is_train in die bedingte operations: nur der gesamte enthaltende Bereich (oben hervorgehoben) ist verbunden.

Wie stelle ich sicher, dass meine Verbindungen zu meinen Diagrammelemente, und nicht nur ihre einschließenden Bereiche werden in TensorBoard vertreten?


Beachten Sie, dass dies nicht nur eine Frage der Zwang Vollständigkeit: wie es steht, die TensorBoard Darstellung nicht vollständig, welche der params_structure Elemente zu etablieren verbinden, welche der structure_logic Elemente: es jeden sein könnte, alle oder gar keiner von ihnen!

Antwort

1

TensorBoard hat Entscheidungen der Darstellung zu machen, weil die Anzeige alle realen Verbindungen unlesbar wäre. Aus diesem Grund sind Namensbereiche so nützlich: Sie können eine Ansicht des gesamten Diagramms anzeigen und dann Elemente Ihres Interesses heranzoomen.

Wie Sie jedoch sagen, wird TensorBoard mit Namensbereichen eine große Verbindung zwischen den beiden Feldern param_structures und structure_logic anzeigen (9 Tensoren sind in diesem Zusammenhang).

Die TensorBoard-Repräsentation kann nicht vollständig feststellen, welches der params_structure-Elemente mit welchem ​​der structure_logic-Elemente verbunden ist: es kann ein beliebiges, alles oder sogar keines von ihnen sein!

Das ist falsch, alle Informationen des Graphen sind dargestellt.
Obwohl nicht grafisch dargestellt, die Verbindung zwischen params_structure/keep_prob_later und structure_logic/keep_prob_later_decay geschrieben, wenn Sie auf dem params_structure/keep_prob_later Knoten klicken und das Feld in der oberen rechten Seite. In der Kategorie "Ausgänge" sehen Sie den Knoten structure_logic/keep_prob_later_decay.

node description


Wenn Sie wirklich die Verbindung sehen möchten, sollten Sie den Knoten keep_prob_later im Rahmen Namen setzen structure_logic/keep_prob_later_decay.


PS:

Beachten Sie, dass diese von Zwangs Vollständigkeit nicht nur ein Thema ist.

Dass man mich zum Lachen :)

+0

Nun ja, technisch "vertreten" in der Tat; aber (wie die Richtung - sehen, was ich dort gemacht habe? - [Karten haben genommen] (http://qz.com/681745/no-its-not-you-google-maps-really-did-get-crappy/)) Nicht in einer Weise, die den Menschen viel hilft. Aber dann wird es nicht um uns Menschen gehen, oder? – orome

Verwandte Themen