我在TensorBoard图形中能否将计算得到的张量与它们填充的占位符连接起来?

我对如何让TensorBoard图形可视化捕捉到我将计算值输入到一些占位符这一事实感到困惑。

我已经定义了占位符

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')

以及相应的用于计算它们值的张量

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))

我在训练模型时会将这些值输入

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)})

但我的TensorBoard图形可视化并未显示这些连接。

我看到占位符正确地连接到了图形的其他部分

我还看到了所有相应的计算值

enter image description here

但后者并未连接到前者。

这是预期的行为吗?有没有办法在TensorBoard图形的可视化中捕捉到计算值被用来填充相应占位符的事实?


如果没有办法将计算值连接到图形中,为什么还要显示它们呢?为什么其他计算值看起来正确连接了呢?例如,我的计算动量值,其定义方式与上述输入的dropout值相同

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))

确实显示为连接到了它们影响的图形的所有部分。


回答:

我看到占位符正确地连接到了图形的其他部分,我还看到了所有相应的计算值,但后者并未连接到前者。

这是预期的行为吗?

这确实是正确的行为。你的图形被分解为两部分:

  1. 计算值keep_prob_***_val的部分
  2. 定义占位符keep_prob_***的部分

第一部分和第二部分在图形中没有连接。当你调用sess.run(keep_prob_***_val)时,你创建了一个Python对象。这个对象随后被输入到图形的第二部分,但图形不知道它来自第一部分。


有没有办法在TensorBoard图形的可视化中捕捉到计算值被用来填充相应占位符的事实?

你可以使用tf.cond()文档)来选择使用图形第一部分计算的值,或测试值(如1.用于keep_prob):

is_train = tf.placeholder(tf.bool, [])def when_train():    return keep_prob_late_valdef when_not_train():    return 1.keep_prob_later = tf.cond(is_train, when_train, when_not_train)

为什么其他计算值看起来正确连接了呢?例如,我的计算动量值,其定义方式与上述输入的dropout值相同,确实显示为连接到了它们影响的图形的所有部分。

在这种情况下,你没有使用中间占位符,所以图形是完全连接的!

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注