def reload_output_layer(model):
#model为加载的模型
new_model = keras.Sequential()
#获取模型最后一层
old_output_layer = model.layers[-1]
#获取最后一层配置文件
old_config = old_output_layer.get_config()
new_config = old_config
#我这里是将激活函数从softmax改为linear
new_config['activation'] = 'linear'
#新建一个和原模型中最后一层一样的层(参数以及各种配置)
new_layer = old_output_layer
#将新配置应用到新层,不过此时参数什么的会被清空,所以需要在下面重新赋值
new_layer = new_layer.from_config(new_config)
for layer in model.layers[:-1]:
new_model.add(layer)
new_model.add(new_layer)
#重新赋值参数,如果没有之前的步骤,直接设置参数会提示权重数量不匹配
new_layer.set_weights(old_output_layer.get_weights())
new_layer.get_config()
new_model.layers
old_output_layer.get_config()
new_layer.weights
#返回新模型
return new_model