Python 在tf.contrib.layers.optimize_损耗中使用指数衰减
Python 在tf.contrib.layers.optimize_损耗中使用指数衰减,python,tensorflow,Python,Tensorflow,tf.contrib.layers.optimize\u loss的文档提到了提供学习率\u衰减\u fn的可能性,例如tf.train.指数衰减。但是,对于建议的衰减函数,我没有找到如何传递附加参数(衰减步骤,衰减速率和楼梯) 第一次尝试: def my_decay(a, b): tf.train.exponential_decay(a, b, decay_steps=5000, decay_rate=0.5, staircase=True
tf.contrib.layers.optimize\u loss
的文档提到了提供学习率\u衰减\u fn
的可能性,例如tf.train.指数衰减
。但是,对于建议的衰减函数,我没有找到如何传递附加参数(衰减步骤
,衰减速率
和楼梯
)
第一次尝试:
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
)
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")
)
这将导致ValueError(尝试将“值”转换为张量,但失败。错误:不支持任何值)。可能是因为函数是python函数而不是TensorFlow op
第二次尝试:
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
)
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\u loss
函数中也失败了(因为参数不会向下传递,而是被视为直接添加到函数中的参数,这必须失败。)
我怎样才能传递必要的参数呢?我想你的意思是说
返回tf.train.exponential\u decay(…
在我的decay的定义中,
哎哟,那太尴尬了。无论如何,谢谢。