이것은 TensorFlow 웹 사이트의 튜토리얼 코드 입니다.
-
아무도 무슨
global_step
뜻 인지 설명 할 수 있습니까?Tensorflow 웹 사이트에서 global step is used count training steps 라고 썼지 만 정확히 무엇을 의미하는지는 모르겠습니다.
-
또한 설정할 때 숫자 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 doc global_step : increment by one after the variables have been updated . 하나의 업데이트 global_step
가 1이 된 후 의미합니까 ?
답변
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
이 컨텍스트에서 전역 단계의 초기 값입니다.
답변
아래에 생생한 샘플을 보여줍니다.
암호:
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과 같은 네트워크가 있습니다. 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)