これは、TensorFlow Webサイトの チュートリアルコード です。
global_step
の意味を説明できる人はいますか?
Tensorflowウェブサイトで、グローバルステップがトレーニングステップ数として使用されていることを発見しましたが、それが正確に何を意味するのかよくわかりません。
また、global_step
をセットアップするとき、数字の0はどういう意味ですか?
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 docglobal_step:変数が更新された後、1ずつ増加します。 global_step
が1回更新されると1になりますか?
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
は、このコンテキストのグローバルステップの初期値です。
global_step
Variable
は、タスク全体のトレーニング中のステップの合計数を保持します(各ステップインデックスは単一のタスクでのみ発生します)。
global_step
によって作成されたタイムラインは、各タスクから個別に、グランドスキームの現在位置を把握するのに役立ちます。たとえば、Tensorboardのglobal_step
に対して損失と精度をプロットできます。
以下に鮮明なサンプルを示します。
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