我有很多层的大网。我在网络中添加了一个新的全连接层,并希望进行微调。但是,除了新的层之外,在每个层中设置lr_mult: 0
非常困难,因为网络中有很多层。
如果有解决这些问题的好方法吗?
感谢。
答案 0 :(得分:4)
如果不是在新的完全连接层之前为所有层设置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
直接更改原型文件中的所有条目:
~$ sed -i -E 's/lr_mult *: *[0-9]+/lr_mult: 0/g' train_val.prototxt
这一行会将lr_mult
中的所有train_val.prototxt
更改为零。您只需要手动为新图层设置lr_mult
。