首页 文章

将新单位添加到Keras模型图层并更改其权重

提问于
浏览
1

我正在开发一个项目,要求我将新单元添加到神经网络的输出层,以实现一种转移学习形式 . 我想知道我是否可以这样做并使用Keras或TensorFlow设置单位的重量 .

具体来说,我想将一个输出神经元附加到Keras模型的输出层,并设置神经元的初始权重和偏差 .

2 回答

  • 0

    您可以将新单位添加到预训练神经网络的输出层 . 这种形式的转学习被称为 using the bottleneck features of a pre-trained network . 这可以在tensorflow和Keras中实现 .

    请在下面的Keras找到教程:https://blog.keras.io/building-powerful-image-classification-models-using-very-little-data.html

    另外,找到下面的tensorflow教程:

    https://github.com/Hvass-Labs/TensorFlow-Tutorials/blob/master/08_Transfer_Learning.ipynb

    希望这可以帮助!

  • 1

    偶然发现了我自己的问题的答案 . 感谢大家的回答/评论 .

    https://keras.io/layers/about-keras-layers/

    此源的前几行详细说明了如何加载和设置权重 . 实质上,将输出神经元附加到Keras模型可以通过加载旧输出层,附加新权重和设置新图层的权重来实现 . 代码如下 .

    # Load weights of previous output layer, set weights for new layer
    old_layer_weights = model.layers.pop().get_weights()
    new_neuron_weights = np.ndarray(shape=[1,bottleneck_size])
    
    # Set new weights
    
    # Append new weights, add new layer
    new_layer = Dense(num_classes).set_weights(np.append(old_layer_weights,new_neuron_weights))
    model.add(new_layer)
    

相关问题