W tym jest kod samouczka ze strony internetowej TensorFlow,
czy ktoś mógłby pomóc wyjaśnić, co to
global_step
znaczy?Znalazłem na stronie Tensorflow napisane, że krok globalny jest używany do liczenia kroków treningowych , ale nie do końca rozumiem, co to dokładnie oznacza.
Co oznacza cyfra 0 podczas konfiguracji
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
Zgodnie z dokumentem Tensorflow global_step: zwiększ o jeden po zaktualizowaniu zmiennych . Czy to oznacza, że jedna aktualizacja global_step
zmieni się na 1?
źródło
tf.train.global_step()
wartośćglobal_step_tensor
wynosi 10. Czy to oznacza, że na wykresie widać już 10 partii?pokaż poniżej żywą próbkę:
kod:
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()))
odpowiedni nadruk
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
źródło
global_step
Variable
Posiada całkowitą liczbę kroków podczas treningu całej zadań (każdy indeks krokiem będzie występować tylko na jednym zadaniu).Oś czasu utworzona przez
global_step
pomaga nam zrozumieć, gdzie jesteśmy w wielkim planie, z każdego zadania oddzielnie. Na przykład, straty i dokładność można przedstawić na wykresieglobal_step
na Tensorboard.źródło
Istnieją sieci, np. GAN, które mogą wymagać dwóch (lub więcej) różnych kroków. Trenowanie sieci GAN ze specyfikacją WGAN wymaga, aby kroki na dyskryminatorze (lub krytycznym) D były większe niż te wykonywane na generatorze G. W takim przypadku warto zadeklarować różne zmienne global_steps.
Przykład: (
G_loss
iD_loss
są utratą generatora i dyskryminatora)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)
źródło