【问题标题】:keras: how to block convolution layer weightskeras:如何阻止卷积层权重
【发布时间】:2016-12-27 18:39:57
【问题描述】:

Here我有一个用于 Keras 的 GoogleNet 模型。是否有任何可能的方法来阻止网络各个层的更改?我想阻止前两层预训练模型的变化。

【问题讨论】:

    标签: python machine-learning keras conv-neural-network


    【解决方案1】:

    通过“阻止单个层的更改”,我假设您不想训练这些层,即您不想修改加载的权重(可能在以前的训练中学到)。

    如果是这样,您可以将trainable=False 传递给层,参数将不会用于训练更新规则。

    例子:

    from keras.models import Sequential
    from keras.layers import Dense, Activation
    
    model = Sequential([
        Dense(32, input_dim=100),
        Dense(output_dim=10),
        Activation('sigmoid'),
    ])
    
    model.summary()
    
    model2 = Sequential([
        Dense(32, input_dim=100,trainable=False),
        Dense(output_dim=10),
        Activation('sigmoid'),
    ])
    
    model2.summary()
    

    您可以在第二个模型的模型摘要中看到参数被计为不可训练的参数。

    ____________________________________________________________________________________________________
    Layer (type)                     Output Shape          Param #     Connected to                     
    ====================================================================================================
    dense_1 (Dense)                  (None, 32)            3232        dense_input_1[0][0]              
    ____________________________________________________________________________________________________
    dense_2 (Dense)                  (None, 10)            330         dense_1[0][0]                    
    ____________________________________________________________________________________________________
    activation_1 (Activation)        (None, 10)            0           dense_2[0][0]                    
    ====================================================================================================
    Total params: 3,562
    Trainable params: 3,562
    Non-trainable params: 0
    ____________________________________________________________________________________________________
    ____________________________________________________________________________________________________
    Layer (type)                     Output Shape          Param #     Connected to                     
    ====================================================================================================
    dense_3 (Dense)                  (None, 32)            3232        dense_input_2[0][0]              
    ____________________________________________________________________________________________________
    dense_4 (Dense)                  (None, 10)            330         dense_3[0][0]                    
    ____________________________________________________________________________________________________
    activation_2 (Activation)        (None, 10)            0           dense_4[0][0]                    
    ====================================================================================================
    Total params: 3,562
    Trainable params: 330
    Non-trainable params: 3,232 
    

    【讨论】:

    • 没问题..如果它回答了您的问题,您可以标记它吗。
    • 我正在尝试,但不幸的是,我没有足够的声誉来标记您的答案((((
    • 您应该能够接受答案,但不能投票,因为投票需要 +15 声望。检查meta.stackexchange.com/questions/5234/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-13
    • 2017-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-28
    • 2019-07-10
    相关资源
    最近更新 更多