如何使烤宽面条层无法生成

时间:2016-03-31 12:17:54

标签: python lasagne

我想使用预训练的神经网络,并根据我的特定需求进行微调。我想使用Python和Lasagne框架。上:

https://github.com/Lasagne/Recipes/blob/master/examples/ImageNet%20Pretrained%20Network%20%28VGG_S%29.ipynb

我找到了一个如何将预训练网络用于特定图像的示例。我的问题是我想用 上面链接中描述的网络作为起点,并为其添加最终层,使其实现TWO CLASS 分类器这是我需要的。因此,我希望冻结网络中的所有图层,并且只允许在我上次添加的图层中进行培训。

显然有一种方法可以表明图层应该是" nontrainable"在千层面,但我没有发现如何在网上做这个。

对此的任何想法都将受到高度赞赏。

2 个答案:

答案 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

相关问题