gpt4 book ai didi

python - 在 tf.train.AdamOptimizer 中手动更改 learning_rate

转载 作者:太空狗 更新时间:2023-10-29 22:10:24 24 4
gpt4 key购买 nike

问题是,仅更改 tf.train.AdamOptimizer 中的 learning_rate 参数是否真的会导致行为发生任何变化:假设代码如下所示:

myLearnRate = 0.001
...
output = tf.someDataFlowGraph
trainLoss = tf.losses.someLoss(output)
trainStep = tf.train.AdamOptimizer(learning_rate=myLearnRate).minimize(trainLoss)
with tf.Session() as session:
#first trainstep
session.run(trainStep, feed_dict = {input:someData, target:someTarget})
myLearnRate = myLearnRate * 0.1
#second trainstep
session.run(trainStep, feed_dict = {input:someData, target:someTarget})

降低的 myLearnRate 现在会应用于第二个 trainStep 吗?这是,节点 trainStep 的创建仅评估一次:

trainStep = tf.train.AdamOptimizer(learning_rate=myLearnRate).minimize(trainLoss)

还是在每次 session.run(train_step) 时都进行评估?我怎么能在 Tensorflow 中检查我的 AdamOptimizer,它是否确实改变了 Learnrate。

免责声明 1:我知道手动更改 LearnRate 是不好的做法。免责声明 2: 我知道有一个类似的问题,但它是通过输入张量作为 learnRate 解决的,它在每个 trainStep 中更新> ( here )。这让我倾向于假设它只能使用张量作为 AdamOptimizerlearning_rate 的输入,但我对此既不确定,也无法理解背后的原因

最佳答案

简短的回答是不,您的新学习率没有应用。 TF 在您首次运行时构建图表,在 Python 端更改某些内容不会转化为运行时图表中的更改。但是,您可以非常轻松地将新的学习率输入图表:

# Use a placeholder in the graph for your user-defined learning rate instead
learning_rate = tf.placeholder(tf.float32)
# ...
trainStep = tf.train.AdamOptimizer(learning_rate=learning_rate).minimize(trainLoss)
applied_rate = 0.001 # we will update this every training step
with tf.Session() as session:
#first trainstep, feeding our applied rate to the graph
session.run(trainStep, feed_dict = {input: someData,
target: someTarget,
learning_rate: applied_rate})
applied_rate *= 0.1 # update the rate we feed to the graph
#second trainstep
session.run(trainStep, feed_dict = {input: someData,
target: someTarget,
learning_rate: applied_rate})

关于python - 在 tf.train.AdamOptimizer 中手动更改 learning_rate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46668622/

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