我想使用预训练的神经网络,并根据我的特定需求进行微调。我想使用Python和Lasagne框架。上:
我找到了一个如何将预训练网络用于特定图像的示例。我的问题是我想用 上面链接中描述的网络作为起点,并为其添加最终层,使其实现TWO CLASS 分类器这是我需要的。因此,我希望冻结网络中的所有图层,并且只允许在我上次添加的图层中进行培训。
显然有一种方法可以表明图层应该是" nontrainable"在千层面,但我没有发现如何在网上做这个。
对此的任何想法都将受到高度赞赏。
答案 0 :(得分:2)
将要使用lr冻结的那些图层设置为0,并仅将要微调的图层设置为非零。目前还没有在线示例。但是你应该查看这个帖子https://groups.google.com/forum/#!topic/lasagne-users/2z-6RrgiHkE
答案 1 :(得分:0)
从要保持冻结的图层的所有参数中删除trainable
标记:
def freeze_layer(layer):
for param in layer.params.values():
param.remove('trainable')
要将所有网络冻结到某个图层,您可以简单地遍历其较低层:
from lasagne.layers import get_all_layers
def freeze_net(net):
layers = get_all_layers(net)
for l in layers:
freeze_layer(l)
未经测试的代码。有关详细信息,请参阅this discussion。