假设我的损失函数是以下形式:
损失 = a*loss_1 + (1-a)*loss_2
假设我正在训练 100 步。如何在 tensorflow 中动态更改损失函数,以便在 100 步训练期间逐渐将“a”从 1 更改为 0?
准确地说,我希望我的损失是 loss = 1*loss_1+0*loss_2 = loss_1 在训练开始时(在第 1 步)
和
loss = 0*loss_1+1*loss_2 = loss_2 最后(步骤 100)
在两者之间有某种逐渐的(不必是连续的)减少。
假设我的损失函数是以下形式:
损失 = a*loss_1 + (1-a)*loss_2
假设我正在训练 100 步。如何在 tensorflow 中动态更改损失函数,以便在 100 步训练期间逐渐将“a”从 1 更改为 0?
准确地说,我希望我的损失是 loss = 1*loss_1+0*loss_2 = loss_1 在训练开始时(在第 1 步)
和
loss = 0*loss_1+1*loss_2 = loss_2 最后(步骤 100)
在两者之间有某种逐渐的(不必是连续的)减少。
假设 的值a不依赖于在当前步骤完成的计算,请创建一个占位符,a然后使用 feed 字典传递您想要的值。
您可以使用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