Это учебный код с веб-сайта TensorFlow,
может ли кто-нибудь помочь объяснить, что
global_step
значит?На веб-сайте Tensorflow я обнаружил, что глобальный шаг используется для подсчета шагов обучения , но я не совсем понимаю, что именно это означает.
Кроме того, что означает цифра 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
Согласно документу Tensorflow global_step: увеличивается на единицу после обновления переменных . Означает ли это, что после одного обновления global_step
становится 1?
источник
tf.train.global_step()
параметраglobal_step_tensor
установлено значение 10. Означает ли это, что на графике уже видны 10 партий?покажу вам яркий образец ниже:
код:
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
источник
global_step
Variable
Содержит общее количество шагов в процессе обучения через задачу (каждый индекс шага будет происходить только на одной задаче).Временная шкала, созданная с помощью,
global_step
помогает нам понять, где мы находимся в общей схеме, для каждой задачи отдельно. Например, потери и точность могут бытьglobal_step
сопоставлены на Tensorboard.источник
Существуют сети, например GAN, для которых может потребоваться два (или более) разных шага. Для обучения GAN со спецификацией WGAN требуется, чтобы количество шагов на дискриминаторе (или критике) 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)
источник