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
函数添加位置参数的另一种尝试也失败了(因为参数不会传递下来,而是直接看作函数的参数,必须失败。)
我如何传递必要的论据?
答案 0 :(得分:1)
我认为你的意思是在return tf.train.exponential_decay(...
的定义中说my_decay
。