Ich bin verwirrt darüber, wie ich meine TensorBoard-Graph-Visualisierung dazu bringen kann, die Tatsache zu erfassen, dass ich berechneten Werten einige meiner Platzhalter zuführe.Kann ich berechnete Tensoren erhalten, um eine Verbindung zu den Platzhaltern herzustellen, die sie in meinem TensorBoard-Diagramm ausfüllen?
Ich habe definiert Platzhalter
with tf.name_scope('params'):
keep_prob_later = tf.placeholder(tf.float32, name='keep_prob_later')
keep_prob_early = tf.placeholder(tf.float32, name='keep_prob_early')
keep_prob_input = tf.placeholder(tf.float32, name='keep_prob_input')
und entsprechenden Tensoren für ihre Werte Berechnung
with tf.name_scope('param_vals'):
with tf.name_scope('keep_prob_later_val'):
keep_prob_later_val = tf.sub(1.0, tf.train.exponential_decay(1 - FLAGS.keep_prob_later, global_step,
FLAGS.decay_steps,
FLAGS.dropout_decay_rate, staircase=False))
with tf.name_scope('keep_prob_early_val'):
keep_prob_early_val = tf.sub(1.0, tf.train.exponential_decay(1 - FLAGS.keep_prob_early, global_step,
FLAGS.decay_steps,
FLAGS.dropout_decay_rate, staircase=False))
with tf.name_scope('keep_prob_input_val'):
keep_prob_input_val = tf.sub(1.0, tf.train.exponential_decay(1 - FLAGS.keep_prob_input, global_step,
FLAGS.decay_steps,
FLAGS.dropout_decay_rate, staircase=False))
die ich dann füttern, wenn ich mein Modell
sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys,
keep_prob_later: sess.run(keep_prob_later_val),
keep_prob_early: sess.run(keep_prob_early_val),
keep_prob_input: sess.run(keep_prob_input_val)})
aber meine TensorBoard Graphvisualisierung trainieren zeigt diese nicht "angeschlossen" an.
Ich sehe die richtig an den Rest meines Graph
und ich sehe alle entsprechenden berechneten Werte zu
verbunden Platzhalter aber letztere nicht Verbindung mit dem ehemaligen.
Ist das das erwartete Verhalten? Gibt es eine Möglichkeit, in der TensorBoard-Visualisierung meines Graphen die Tatsache zu erfassen, dass die berechneten Werte verwendet werden, um die entsprechenden Platzhalter zu füllen?
Wenn es keine Möglichkeit gibt, die berechneten Werte mit dem Graphen zu verbinden, warum dann? Und warum andere berechnete Werte korrekt angezeigt werden. Zum Beispiel meine berechneten Impulswerte, die ebenso wie die oben fed Dropout definiert sind Werte
with tf.name_scope('param_vals'):
with tf.name_scope('momentum_val'):
momentum_val = tf.sub(1.0, tf.train.exponential_decay(1 - FLAGS.initial_momentum, global_step,
FLAGS.decay_steps, FLAGS.momentum_decay_rate,
staircase=False))
zeigen nach oben verbunden ist allen Teilen des Graphen sie beeinflussen.
Warum verwenden Sie einen Zwischen 'tf.placeholder' für die' keep_prob _ *** ', statt nur die Tensoren mit' keep_prob _ *** _ val' Sie berechnet? –
@OlivierMoindrot: Ich muss die Platzhalter füttern. Manchmal füttere ich das entsprechende '... _val' (zum Trainieren) und manchmal füttere ich' 1.0' (zur Vorhersage und zur Validierung). – orome
Auf jeden Fall ist es das normale Verhalten, dass TensorFlow die Verbindung nicht sehen, weil die Verbindung in Python getan wird, ohne TensorFlow es zu wissen. Wenn du die Verbindung sehen willst, könntest du eine 'tf.cond()' Sache benutzen, mit einem booleschen 'Zug als Bedingung? –