如何在 TensorFlow 中设置超参数 (learning_rate) 时间表?
How to set hyperparameter (learning_rate) schedule in TensorFlow?
在TensorFlow中调度超参数的方式是什么?
也就是说,为了可重复性,我想使用建议的学习率计划 {0: 0.1, 1: 1., 100: 0.01, 150: 0.001} 来实现 ResNet(随便你说一个),或者启用权重仅在前几个初始时期后衰减。
例如tensorpack提供了一个选项如下:
ScheduledHyperParamSetter('learning_rate', [(1, 0.1), (82, 0.01), (123, 0.001), (300, 0.0002)])
如何在原生 TF 中完成?
还好,没那么难
schedule = {1: 0.1, 2: 0.2, 3: 0.3, 4: 0.4, 100: 0.01, 150: 0.001}
schedule = sorted(config.lr_schedule.items(), key=lambda x: x[0])
boundaries = [num_train_iter * int(x[0]) for x in schedule]
rates = [x[1] for x in schedule]
rates = rates[:1] + rates #
assert len(boundaries) + 1 == len(rates)
learning_rate = tf.train.piecewise_constant(tf.cast(global_step, tf.int32), boundaries, rates)
在TensorFlow中调度超参数的方式是什么?
也就是说,为了可重复性,我想使用建议的学习率计划 {0: 0.1, 1: 1., 100: 0.01, 150: 0.001} 来实现 ResNet(随便你说一个),或者启用权重仅在前几个初始时期后衰减。
例如tensorpack提供了一个选项如下:
ScheduledHyperParamSetter('learning_rate', [(1, 0.1), (82, 0.01), (123, 0.001), (300, 0.0002)])
如何在原生 TF 中完成?
还好,没那么难
schedule = {1: 0.1, 2: 0.2, 3: 0.3, 4: 0.4, 100: 0.01, 150: 0.001}
schedule = sorted(config.lr_schedule.items(), key=lambda x: x[0])
boundaries = [num_train_iter * int(x[0]) for x in schedule]
rates = [x[1] for x in schedule]
rates = rates[:1] + rates #
assert len(boundaries) + 1 == len(rates)
learning_rate = tf.train.piecewise_constant(tf.cast(global_step, tf.int32), boundaries, rates)