【发布时间】:2016-07-01 00:08:36
【问题描述】:
我为 TensorBoard 制作了最简单的 1D 示例(跟踪二次方的最小化),但我得到的图对我来说没有意义,我不知道为什么。是我自己的实现还是 TensorBoard 有问题?
下面是图:
直方图:
我通常将直方图视为对概率分布(或频率计数)进行编码的条形图。我假设y轴表示值,x轴表示计数?由于我的步数是 120,这似乎是合理的猜测。
和标量图:
为什么我的情节中有一条奇怪的线?
产生它的代码(你应该可以复制粘贴它并运行它):
## run cmd to collect model: python playground.py --logdir=/tmp/playground_tmp
## show board on browser run cmd: tensorboard --logdir=/tmp/playground_tmp
## browser: http://localhost:6006/
import tensorflow as tf
# x variable
x = tf.Variable(10.0,name='x')
# b placeholder (simualtes the "data" part of the training)
b = tf.placeholder(tf.float32)
# make model (1/2)(x-b)^2
xx_b = 0.5*tf.pow(x-b,2)
y=xx_b
learning_rate = 1.0
# get optimizer
opt = tf.train.GradientDescentOptimizer(learning_rate)
# gradient variable list = [ (gradient,variable) ]
gv = opt.compute_gradients(y,[x])
# transformed gradient variable list = [ (T(gradient),variable) ]
decay = 0.9 # decay the gradient for the sake of the example
# apply transformed gradients
tgv = [ (decay*g, v) for (g,v) in gv] #list [(grad,var)]
apply_transform_op = opt.apply_gradients(tgv)
# track value of x
x_scalar_summary = tf.scalar_summary("x", x)
x_histogram_sumarry = tf.histogram_summary('x_his', x)
with tf.Session() as sess:
merged = tf.merge_all_summaries()
tensorboard_data_dump = '/tmp/playground_tmp'
writer = tf.train.SummaryWriter(tensorboard_data_dump, sess.graph)
sess.run(tf.initialize_all_variables())
epochs = 120
for i in range(epochs):
b_val = 1.0 #fake data (in SGD it would be different on every epoch)
# applies the gradients
[summary_str_apply_transform,_] = sess.run([merged,apply_transform_op], feed_dict={b: b_val})
writer.add_summary(summary_str_apply_transform, i)
【问题讨论】:
-
我在统计溢出问题上提出了类似的问题:stats.stackexchange.com/questions/220491/… 我不认为我犯了任何错误,但图表对我来说看起来很奇怪。
-
好像你有多个事件文件,删除除最后一个之外的所有文件
-
@OlivierMoindrot 很有趣。似乎有效,你知道为什么吗?
-
如果同一个文件夹中有多个事件文件,Tensorboard 会认为它们属于同一个体验。它将绘制第一个文件,当第二个文件从 0 重新开始时,它将以从第 100 步到第 0 步的直线加入两次运行。
标签: python machine-learning neural-network tensorflow