2

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

损失 = 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)

在两者之间有某种逐渐的(不必是连续的)减少。

4

2 回答 2

0

假设 的值a不依赖于在当前步骤完成的计算,请创建一个占位符,a然后使用 feed 字典传递您想要的值。

于 2017-03-30T20:26:13.867 回答
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
于 2018-02-27T21:55:52.477 回答