我在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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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