global_step在Tensorflow中意味着什么?

Gab*_*Chu 84 deep-learning tensorflow

这是来自TensorFlow网站的教程代码,

  1. 有谁能帮忙解释一下是什么global_step意思?

    我在Tensorflow网站上发现,使用全局步骤计算训练步骤,但我并不完全明白这意味着什么.

  2. 此外,数字0在设置时意味着什么global_step

    def training(loss,learning_rate):
        tf.summary.scalar('loss',loss)
        optimizer = tf.train.GradientDescentOptimizer(learning_rate)

        # Why 0 as the first parameter of the global_step tf.Variable?
        global_step = tf.Variable(0, name='global_step',trainable=False)

        train_op = optimizer.minimize(loss, global_step=global_step)

        return train_op
Run Code Online (Sandbox Code Playgroud)

根据Tensorflow doc global_step:在变量更新后增加1.这意味着一次更新后global_step变为1吗?

mar*_*ars 100

global_step指的是图表看到的批次数.每次提供批次时,权重都会以最小化损失的方向更新.global_step只记录到目前为止看到的批次数.在minimize()参数列表中传递时,变量增加1.看看optimizer.minimize().

您可以global_step使用获取值tf.train.global_step().实用方法tf.train.get_global_step或方法也很方便tf.train.get_or_create_global_step.

0 是此上下文中全局步骤的初始值.

  • 回答xwk的问题,我想如果你在100次迭代后停止训练,第二天恢复模型并运行另外100次迭代.现在,您的全局步骤为200,但第二次运行的局部迭代次数为1到100,这是该运行的本地迭代次数,而不是全局迭代步骤.因此全局步骤记录了迭代总数,可能用于改变学习速率或其他超参数. (22认同)
  • @martianwars,我仍然没有得到global_step的观点.不是由python程序本身驱动的批处理的循环,因此python程序可以很容易地知道已经完成了多少批处理.为什么要让张量流保持这样的计数器呢? (9认同)
  • 以Wei Liu的答案为基础,全局步骤对于跟踪分布式TensorFlow作业的进度也很有用.当工人同时看到批次时,需要有一种机制来跟踪所看到的批次总数.这就是[StopAtStepHook](https://www.tensorflow.org/api_docs/python/tf/train/StopAtStepHook)运行的方式. (5认同)

env*_*nce 5

所述global_step Variable横跨任务训练期间保持的步骤的总数(每个步骤指数将仅发生在单一任务)。

创建的时间表global_step帮助我们了解我们在宏伟计划中的位置,分别来自每个任务。例如,可以global_step在 Tensorboard上绘制损失和准确性。