當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python tf.compat.v1.train.get_or_create_global_step用法及代碼示例


返回並創建(如有必要)全局步長張量。

用法

tf.compat.v1.train.get_or_create_global_step(
    graph=None
)

參數

  • graph 在其中創建全局步長張量的圖。如果缺少,請使用默認圖表。

返回

  • 全局步長張量。

遷移到 TF2

警告:這個 API 是為 TensorFlow v1 設計的。繼續閱讀有關如何從該 API 遷移到本機 TensorFlow v2 等效項的詳細信息。見TensorFlow v1 到 TensorFlow v2 遷移指南有關如何遷移其餘代碼的說明。

隨著全局圖的棄用,TF 不再跟蹤集合中的變量。也就是說,TF2 中沒有全局變量。因此,全局階躍函數已被刪除 (get_or_create_global_step , create_global_step , get_global_step)。您有兩種遷移選擇:

  1. 創建一個 Keras 優化器,它會生成一個 iterations 變量。調用 apply_gradients 時,此變量會自動遞增。
  2. 手動創建並增加 tf.Variable

下麵是一個從使用全局步驟遷移到使用 Keras 優化器的示例:

定義一個虛擬模型和損失:

def compute_loss(x):
  v = tf.Variable(3.0)
  y = x * v
  loss = x * 5 - x * v
  return loss, [v]

遷移前:

g = tf.Graph()
with g.as_default():
  x = tf.compat.v1.placeholder(tf.float32, [])
  loss, var_list = compute_loss(x)
  global_step = tf.compat.v1.train.get_or_create_global_step()
  global_init = tf.compat.v1.global_variables_initializer()
  optimizer = tf.compat.v1.train.GradientDescentOptimizer(0.1)
  train_op = optimizer.minimize(loss, global_step, var_list)
sess = tf.compat.v1.Session(graph=g)
sess.run(global_init)
print("before training:", sess.run(global_step))
before training:0
sess.run(train_op, feed_dict={x:3})
print("after training:", sess.run(global_step))
after training:1

遷移到 Keras 優化器:

optimizer = tf.keras.optimizers.SGD(.01)
print("before training:", optimizer.iterations.numpy())
before training:0
with tf.GradientTape() as tape:
  loss, var_list = compute_loss(3)
  grads = tape.gradient(loss, var_list)
  optimizer.apply_gradients(zip(grads, var_list))
print("after training:", optimizer.iterations.numpy())
after training:1

相關用法


注:本文由純淨天空篩選整理自tensorflow.org大神的英文原創作品 tf.compat.v1.train.get_or_create_global_step。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。