tf.contrib.layers.optimize_loss
的文档提到可以给出 learning_rate_decay_fn
,例如tf.train.exponential_decay
。但是,对于建议的衰减函数,我没有找到如何传递附加参数( decay_steps
、 decay_rate
和 staircase
)。
第一次尝试:
def my_decay(a, b):
tf.train.exponential_decay(a, b, decay_steps=5000, decay_rate=0.5,
staircase=True, name="LR_decay")
train_op = tf.contrib.layers.optimize_loss(
loss,
global_step=global_counter,
learning_rate=FLAGS.learning_rate,
optimizer=optimizer,
learning_rate_decay_fn=my_decay
)
这会导致 ValueError (尝试将“值”转换为张量但失败。错误:不支持任何值)。可能是因为该函数是 python 函数而不是 TensorFlow 操作。
第二次尝试:
train_op = tf.contrib.layers.optimize_loss(
loss,
global_step=global_counter,
learning_rate=FLAGS.learning_rate,
optimizer=optimizer,
learning_rate_decay_fn=tf.train.exponential_decay(decay_steps=5000, decay_rate=0.5,
staircase=True, name="LR_decay")
)
它提示缺少 2 个位置参数(因为调用缺少参数的函数不会返回函数,但会导致尝试求值)。
再次尝试将位置参数添加到 optimize_loss
直接函数也失败了(因为参数没有被传递下来,而是直接被视为函数的参数,这一定会失败。)
如何传递必要的参数?
最佳答案
我认为你的意思是在my_decay
的定义中说return tf.train.exponential_decay(...
。
关于python - 在 tf.contrib.layers.optimize_loss 中使用指数衰减,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46078650/