【问题标题】:How to use adapted learning rate in MxNet如何在 MxNet 中使用自适应学习率
【发布时间】:2017-02-23 11:32:15
【问题描述】:

学习率是我的网络效果的关键。 当我定义 lr = 0.05 时,train/validation-accuracy 会剧烈波动,但是 lr = 0.025 在 Epoch[30] 之前我无法获得任何效果。 所以我记得 caffe 中的自适应学习率,起初我选择了一个基础 lr = 0.1,随着训练的进行,lr 衰减到 0.05,然后是 0.025 和更小。 MxNet有这个策略吗,怎么用?

【问题讨论】:

    标签: mxnet


    【解决方案1】:

    您有两种选择:

    一种是在每个批次/时期结束时使用回调函数:

    sgd_opt = opt.SGD(learning_rate=0.005, momentum=0.9, wd=0.0001, rescale_grad=(1.0/batch_size))
    model = mx.model.FeedForward(ctx=gpus, symbol=softmax, num_epoch=num_epoch,
                  optimizer=sgd_opt, initializer=mx.init.Uniform(0.07))
    def lr_callback(param):
        if param.nbatch % 10 == 0:
          sgd_opt.lr /= 10 # decrease learning rate by a factor of 10 every 10 batches
        print 'nbatch:%d, learning rate:%f' % (param.nbatch, sgd_opt.lr)
    
    model.fit(X=train_dataiter, eval_data=test_dataiter, batch_end_callback=lr_callback)
    

    另一种是使用optimizers之一,例如AdaGrad或ADAM

    model = mx.model.FeedForward(
            ctx                = [mx.gpu(0)],
            num_epoch     = 60,
            symbol            = network,
            optimizer        =  'adam',
            initializer        = mx.init.Xavier(factor_type="in", magnitude=2.34))
    
    model.fit(X= data_train)   
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-30
      • 2016-02-28
      • 2016-11-19
      • 1970-01-01
      • 1970-01-01
      • 2019-01-18
      • 2017-08-01
      • 2020-11-22
      相关资源
      最近更新 更多