global_step在Tensorflow中意味着什么?

时间:2016-12-15 14:32:19

标签: tensorflow deep-learning

这是来自TensorFlow网站的tutorial code

  1. 任何人都可以帮忙解释."'的含义吗?

    我在Tensorflow网站上发现,全球步骤用于计算培训步骤,但我并不完全明白这意味着什么。

  2. 此外,设置global_step时数字0的含义是什么?

  3. global_step

    根据Tensorflow doc global_step:在变量更新后增加1 。这是否意味着在一次更新后 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 变为1?

4 个答案:

答案 0 :(得分:90)

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

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

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

答案 1 :(得分:2)

global_step Variable包含跨任务训练期间的总步数(每个步骤索引仅在单个任务上发生)。

global_step创建的时间轴有助于我们了解我们所处的位置 宏伟计划,分别从每个任务。例如,可以在Tensorboard上针对global_step绘制损失和准确度。

答案 2 :(得分:2)

在下面向您展示一个生动的样本:

的代码:

train_op = tf.train.GradientDescentOptimizer(learning_rate=LEARNING_RATE).minimize(loss_tensor,global_step=tf.train.create_global_step())
with tf.Session() as sess:
    ...
    tf.logging.log_every_n(tf.logging.INFO,"np.mean(loss_evl)= %f at step %d",100,np.mean(loss_evl),sess.run(tf.train.get_global_step()))

对应的打印

INFO:tensorflow:np.mean(loss_evl)= 1.396970 at step 1
INFO:tensorflow:np.mean(loss_evl)= 1.221397 at step 101
INFO:tensorflow:np.mean(loss_evl)= 1.061688 at step 201

答案 3 :(得分:0)

有网络,例如GAN,可能需要两个(或更多)不同的步骤。用WGAN规范训练GAN要求区分器(或批评者)D上的步骤比生成器G上执行的步骤更多。在这种情况下,声明不同的global_steps变量很有用。

示例:(G_lossD_loss是生成器和鉴别器的损失

G_global_step = tf.Variable(0, name='G_global_step', trainable=False)
D_global_step = tf.Variable(0, name='D_global_step', trainable=False)

minimizer = tf.train.RMSPropOptimizer(learning_rate=0.00005)

G_solver = minimizer.minimize(G_loss, var_list=params, global_step=G_global_step)
D_solver = minimizer.minimize(D_loss, var_list=params, global_step=D_global_step)