我正在研究Tensorflow实现,其中包括以下代码段。我不太明白tf.summary.scalar
试图实现什么。我的理解是"queue/%s/fraction_of_%d_full" % (q.name + "_" + phase, capacity)
应该是一个名字,但这个名字是什么样的? math_ops.cast(q.size(), tf.float32) * (1. / capacity)
应该是一个张量,但这个张量代表什么?
capacity = 50
q = tf.FIFOQueue(capacity=50, dtypes=dtypes, shapes=shapes)
tf.summary.scalar("queue/%s/fraction_of_%d_full" %
(q.name + "_" + phase, capacity),
math_ops.cast(q.size(), tf.float32) * (1. / capacity))
答案 0 :(得分:2)
这个tf.summary.scalar
调用会将队列大小(相对于容量)输出到tensorboard,因为它在会话期间会发生变化。
标量将通过与此模式匹配的名称显示:'queue/%s/fraction_of_%d_full'
,例如'queue/fifo_queue_training/fraction_of_100_full'
,其中fifo_queue
是当前队列,其容量为100
。
它的值将等于队列中的已用空间,即queue.size() / queue.capacity
。这条线只是一种将其转换为32位浮点数的奇特方式:
math_ops.cast(q.size(), tf.float32) * (1. / capacity)