[英]How to make Lasagne layers nontrainable
我想使用预训练的神经网络,并根据我的特定需求对其进行微调。 我想为此使用 Python 和 Lasagne 框架。 在:
我找到了一个关于如何对特定图像使用预训练网络的示例。 我的问题是我想使用上面链接中描述的网络作为起点,并为其添加最后一层,使其实现我需要的二级分类器。 因此,我想保持网络中的所有层冻结,并只允许在我最后添加的层中进行训练。
显然有一种方法可以表明千层面中的图层应该是“不可训练的”,但我在网上没有找到如何做到这一点的例子。
对此的任何想法将不胜感激。
将您想要用 lr 冻结的那些层设置为 0,并且只将您想要微调 lr 的那些层设置为非零。 目前还没有在线示例。 但你应该检查这个线程https://groups.google.com/forum/#!topic/lasagne-users/2z-6RrgiHkE
从要保持冻结的层的所有参数中删除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)
代码未经测试。 有关更多信息,请参阅此讨论。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.