【问题标题】:Learning Rate Decay in Lasagne千层面的学习率衰减
【发布时间】:2016-05-30 16:28:59
【问题描述】:

我正在使用nesterov 动量来更新卷积神经网络的权重。我正在使用千层面来构建 CNN。如何实现每个 epoch 的学习率衰减?

prediction = lasagne.layers.get_output(network)
loss = lasagne.objectives.categorical_crossentropy(prediction, target_var)
params = lasagne.layers.get_all_params(network, trainable=True)
lasagne.updates.nesterov_momentum(loss, params, learning_rate, momentum=0.9)
train_fn = theano.function([input_var_1, input_var_2, target_var], loss, updates=updates)

【问题讨论】:

  • 你能像在 Keras 中那样使用 adam 吗?如果是这样,你可以只使用 adam 或一个如果它的变体......

标签: python theano deep-learning lasagne


【解决方案1】:

将您的学习率定义为图形元素

...
learning_rate = T.scalar(name='learning_rate')
updates = lasagne.updates.nesterov_momentum(loss, params, learning_rate, momentum=0.9)
...

将你的学习率节点添加到 train_fn

train_fn = theano.function([input_var_1, input_var_2, target_var, learning_rate], loss, updates=updates)

现在您可以像这样调整学习率:

base_lr = 1e-4
lr_decay = 0.8

for epoch in range(epochs):
    lr = base_lr * (lr_decay ** epoch)
    loss, updates = train_fn(input_1, input_2, target, lr)

【讨论】:

    【解决方案2】:

    我认为你错过了什么:

    prediction = lasagne.layers.get_output(network)
    loss = lasagne.objectives.categorical_crossentropy(prediction, target_var)
    params = lasagne.layers.get_all_params(network, trainable=True)
    updates = lasagne.updates.nesterov_momentum(loss, params, learning_rate, momentum=0.9)
    train_fn = theano.function([input_var_1, input_var_2, target_var], loss, updates=updates)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-11-19
      • 2019-09-03
      • 1970-01-01
      • 2019-05-05
      • 2021-03-19
      • 2016-09-02
      • 1970-01-01
      相关资源
      最近更新 更多