【问题标题】:How to set learning rate in a big net for fine-tuning in Caffe?如何在大网络中设置学习率以在 Caffe 中进行微调?
【发布时间】:2016-01-06 14:26:34
【问题描述】:

我有一张有很多层的大网。我在网络中添加了一个新的全连接层,并想做一个微调。但是,除了新的层之外,在每一层都设置lr_mult: 0 非常困难,因为网络中有很多层。
如果有什么好的方法可以解决这些问题?

谢谢。

【问题讨论】:

  • 试试sed
  • 对不起,你能告诉我一些细节吗?

标签: neural-network deep-learning caffe


【解决方案1】:

不如在新的全连接层之前为所有层的所有参数设置lr_mult: 0,而是在新层之后停止反向传播?

你可以通过设置propagate_down: false来做到这一点。
例如:

layer {
  name: "new_layer"
  type: "InnerProduct"
  ...
  inner_product_param {
    ...
  }
  propagate_down: false # do not continue backprop after this layer
}

或者,您可以使用命令行实用程序sed 直接更改 prototxt 文件中的所有条目:

~$ sed -i -E 's/lr_mult *: *[0-9]+/lr_mult: 0/g' train_val.prototxt

这一行会将您的train_val.prototxt 中的所有lr_mult 更改为零。您只需手动为新层设置lr_mult

【讨论】:

  • 感谢您的回答。我认为sed 可能更适合我。顺便说一句,我还有一个问题,如果我设计的层有两个底部,我希望其中一个可以反向传播,我应该如何设计层和设置 net.prototxt?谢谢。
  • @nannanmath 请作为新问题发布
猜你喜欢
  • 2018-12-02
  • 2019-07-17
  • 2016-10-27
  • 2014-10-21
  • 2016-04-28
  • 2016-11-24
  • 2019-12-27
  • 2021-07-06
相关资源
最近更新 更多