gpt4 book ai didi

python - tf.train.get_global_step() 的值与当前训练步骤之间的差异

转载 作者:行者123 更新时间:2023-11-30 09:46:15 25 4
gpt4 key购买 nike

tf.train.get_global_step() 是否返回当前训练步骤的值?如果不是,那么当前global_step与当前训练步骤有何不同?

这是引用以下代码:

optimizer=lambda: tf.train.FtrlOptimizer(
learning_rate=tf.train.exponential_decay(
learning_rate=0.1,
global_step=tf.train.get_global_step(),
decay_steps=10000000,
decay_rate=0.96)))

tf.train.get_global_step() 是否会在每个训练步骤中增加 global_step 并相应地影响 learning_rate?或者更具体地说,global_step 值是否与当前训练步值相同并相应地影响 learning_rate

最佳答案

问题编辑后编辑

Will tf.train.get_global_step() increment global_step at every training step?

没有。优化器将处理增量,tf.train.get_global_step() 只会获取定义用于存储全局步骤的当前变量(如果已定义)。

and affect the learning_rate accordingly?

是的,学习率计划将在内部获取当前全局步长的值并相应地调整 LR。

更新:一些说明

在 TF 中,Python 中通常使用的“变量”(不是tf.Variable())和张量(tf.Variable 是一个张量)。

当你打电话时

global_step = tf.train.get_global_step()

(假设之前在某处定义了全局步骤)您将得到一个 Tensor 对象,而不是一个整数。

基本思想是将计算的构建阶段(描述应用于数据的操作)与实际执行(输入数据并获取结果)分开。这通常会在一开始引起困惑,但它是 TF 编程模型的一个关键点(至少在 TF 2.0 之前)。

如果您想获取global_step的当前值,您需要评估图表。假设您已经定义了 tf.Session(),您可以:

step_value = sess.run(global_step)

或者:

step_value = global_step.eval(session=sess)

这是在 LR 时间表内部完成的。在每个步骤中,它将获取全局步骤的当前值,并根据给定的参数计算 LR。同样,优化器内部将负责在每个步骤更新当前全局步骤值,因此除非您需要该值进行日志记录/调试,否则您通常不会自己显式评估 global_step

关于python - tf.train.get_global_step() 的值与当前训练步骤之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52362797/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com