假设我的损失函数具有以下形式:
损失= 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)
在某种程度上渐进(不必连续)之间减少。
答案 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