# 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)
2 回答
您可以将新单位添加到预训练神经网络的输出层 . 这种形式的转学习被称为
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
希望这可以帮助!
偶然发现了我自己的问题的答案 . 感谢大家的回答/评论 .
https://keras.io/layers/about-keras-layers/
此源的前几行详细说明了如何加载和设置权重 . 实质上,将输出神经元附加到Keras模型可以通过加载旧输出层,附加新权重和设置新图层的权重来实现 . 代码如下 .