代码之家  ›  专栏  ›  技术社区  ›  y.selivonchyk

如何在TensorFlow中设置hyperparameter(learning\u rate)时间表?

  •  0
  • y.selivonchyk  · 技术社区  · 8 年前

    在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中做到这一点?

    1 回复  |  直到 8 年前
        1
  •  0
  •   y.selivonchyk    8 年前

    好吧,没那么难

        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)
    
    推荐文章