培训期间改变损失功能

时间:2017-03-30 19:53:01

标签: tensorflow loss-function

假设我的损失函数具有以下形式:

损失= a * loss_1 +(1-a)* loss_2

假设我正在训练100步。如何动态改变tensorflow中的损失函数,以便逐渐改变" a"在100步培训期间从1到0?

确切地说,我希望自己的损失  损失= 1 * loss_1 + 0 * loss_2 = loss_1 在培训开始时(步骤1)

损失= 0 *损失_1 + 1 *损失_2 =最后的损失_2(步骤100)

在某种程度上渐进(不必连续)之间减少。

2 个答案:

答案 0 :(得分:0)

假设a的值不依赖于当前步骤完成的计算,请为a创建占位符,然后使用Feed字典传递所需的值。

答案 1 :(得分:0)

您可以使用tf.train.polynomial_decay

tf.train.polynomial_decay(learning_rate=1, global_step=step_from_placeholder,
    decay_steps=100, end_learning_rate=0,
    power=1.0, cycle=False, name=None)

这计算

global_step = min(global_step, decay_steps)
decayed_learning_rate = (learning_rate - end_learning_rate) * \
  (1 - global_step / decay_steps) ** (power) + end_learning_rate