簡體   English   中英

如何使千層面層不可訓練

[英]How to make Lasagne layers nontrainable

我想使用預訓練的神經網絡,並根據我的特定需求對其進行微調。 我想為此使用 Python 和 Lasagne 框架。 在:

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

我找到了一個關於如何對特定圖像使用預訓練網絡的示例。 我的問題是我想使用上面鏈接中描述的網絡作為起點,並為其添加最后一層,使其實現我需要的二級分類器。 因此,我想保持網絡中的所有層凍結,並只允許在我最后添加的層中進行訓練。

顯然有一種方法可以表明千層面中的圖層應該是“不可訓練的”,但我在網上沒有找到如何做到這一點的例子。

對此的任何想法將不勝感激。

將您想要用 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM