这是来自TensorFlow网站的tutorial code,
任何人都可以帮忙解释."'
的含义吗?
我在Tensorflow网站上发现,全球步骤用于计算培训步骤,但我并不完全明白这意味着什么。
此外,设置global_step
时数字0的含义是什么?
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?
答案 0 :(得分:90)
global_step
指的是图表看到的批次数。每次提供批次时,权重都会以最小化损失的方向更新。 global_step
只记录到目前为止看到的批次数。当它在minimize()
参数列表中传递时,变量增加1。看看optimizer.minimize()
。
您可以使用tf.train.global_step()
获取global_step
值。
实用方法tf.train.get_global_step
或tf.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_loss
和D_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)