我正在研究一个Tensorflow实现,其中包括以下代码段。我不太理解tf.summary.scalar
试图实现什么。我的理解是"queue/%s/fraction_of_%d_full" % (q.name + "_" + phase, capacity)
应该是一个名称,但这个名称是什么样的?math_ops.cast(q.size(), tf.float32) * (1. / capacity)
应该是一个张量,但这个张量代表什么?
capacity = 50q = 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))
回答:
这个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)