web-dev-qa-db-ja.com

Tensorflowでglobal_stepはどういう意味ですか?

これは、TensorFlow Webサイトの チュートリアルコード です。

  1. global_stepの意味を説明できる人はいますか?

    Tensorflowウェブサイトで、グローバルステップがトレーニングステップ数として使用されていることを発見しましたが、それが正確に何を意味するのかよくわかりません。

  2. また、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になりますか?

76
GabrielChu

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は、このコンテキストのグローバルステップの初期値です。

92
martianwars

global_stepVariableは、タスク全体のトレーニング中のステップの合計数を保持します(各ステップインデックスは単一のタスクでのみ発生します)。

global_stepによって作成されたタイムラインは、各タスクから個別に、グランドスキームの現在位置を把握するのに役立ちます。たとえば、Tensorboardのglobal_stepに対して損失と精度をプロットできます。

2

以下に鮮明なサンプルを示します。

コード:

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
2
yichudu