学习率(learning rate)
更新后的参数 = 当前参数 - 学习率 * 损失函数的梯度(偏导数)
损失函数:
指数衰减学习率
可以先用较大的学习率,快速得到最优解,然后逐步减小学习率,使模型在训练后期稳定。
指数衰减学习率 = 初始学习率 * 学习率衰减率 ^(当前轮数 / 多少轮衰减一次)
epoch = 40
LR_BASE = 0.2 # 初始学习率
LR_DECAY = 0.99 # 学习衰减率
LR_STEP = 1 # 多少轮衰减一次
for epoch in range(epoch):
lr = LR_BASE * LR_DECAY ** (epoch / LR_STEP)
with tf.GradientTape() as tape:
loss = tf.square(w + 1)
grads = tape.gradient(loss, w)
w.assign_sub(lr * grads)
print("After %s epoch, w is %f, loss is %f, lr is %f" % (epoch, w.numpy(), loss, lr))