假设网络中有一些参数我想在 pycaffe 中手动更改,而不是由求解器自动更新。例如,假设我们想要惩罚密集激活,这可以作为额外的损失层来实现。在整个训练过程中,我们希望通过将损失乘以以预先指定的方式演变的系数来改变这种惩罚的强度。在咖啡中做到这一点的好方法是什么?是否可以在 prototxt 定义中指定这一点?在pycaffe界面中?
更新:我认为将 lr_mult
和 decay_mult
设置为 0 可能是一种解决方案,但看起来很笨拙。也许以 blob 形式提供参数的 DummyDataLayer
会是更好的选择。但是文档太少了,对于刚接触 caffe 的人来说写起来相当困难
最佳答案
也许这是一个微不足道的问题,但以防万一其他人可能感兴趣,这是我最终使用的成功实现
在层proto def中,将lr_mult
和decay_mult
设置为0,这意味着我们既不想学习也不想衰减参数。使用filler
设置初始值。要在网络训练期间更改 python 中的参数,请使用如下语句
net.param['name'][index].data[...] = 某事
关于deep-learning - caffe中如何实现固定参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37537547/