Programing

Tensorflow에서 global_step은 무엇을 의미합니까?

lottogame 2020. 10. 6. 07:41
반응형

Tensorflow에서 global_step은 무엇을 의미합니까?


이것은 TensorFlow 웹 사이트의 튜토리얼 코드 입니다.

  1. 아무도 무슨 global_step인지 설명 할 수 있습니까?

    Tensorflow 웹 사이트에서 global step is used count training steps 라는 글을 찾았 지만 정확히 무엇을 의미하는지 모르겠습니다.

  2. 또한 설정할 때 숫자 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 이 컨텍스트에서 전역 단계의 초기 값입니다.


(가) global_step Variable작업에서 훈련 도중 단계의 총 수를 보유 (각 단계의 인덱스는 단일 작업에 발생합니다).

에 의해 생성 된 타임 라인 global_step은 각 작업에서 개별적으로 우리가 그랜드 계획에있는 위치를 파악 하는 데 도움이됩니다. 예를 들어 손실과 정확도는 global_stepTensorboard 에 대해 플롯 될 수 있습니다 .


아래에 생생한 샘플을 보여줍니다.

암호:

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

두 개 (또는 그 이상)의 다른 단계가 필요할 수있는 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)

참고 URL : https://stackoverflow.com/questions/41166681/what-does-global-step-mean-in-tensorflow

반응형