如何将功能保存到keras文件中?

时间:2017-05-31 07:27:22

标签: python-2.7 python-3.x

我已经训练了权重矩阵,我想在每一层的每一端提取特征并将它们存储在一个文件中。我怎么能这样做?感谢。

1 个答案:

答案 0 :(得分:0)

查看Keras FAQ

  

一种简单的方法是创建一个输出图层的新模型   你感兴趣的是:

from keras.models import Model
model = ...  # create the original model 
layer_name = 'my_layer' 
intermediate_layer_model = Model(inputs=model.input,
                           outputs=model.get_layer(layer_name).output)    
intermediate_output = intermediate_layer_model.predict(data)
     

或者,您可以构建一个将返回的Keras函数   给定某个输入的某个层的输出,例如:

from keras import backend as K
get_3rd_layer_output = K.function([model.layers[0].input],
                              [model.layers[3].output])
layer_output = get_3rd_layer_output([X])[0] 
     

同样,您可以直接构建Theano和TensorFlow函数。

     

请注意,如果您的模型在培训中有不同的行为,   测试阶段(例如,如果它使用Dropout,BatchNormalization等),   您需要将学习阶段标志传递给您的函数:

get_3rd_layer_output = K.function([model.layers[0].input, K.learning_phase()],
                              [model.layers[3].output])

# output in test mode = 0
layer_output = get_3rd_layer_output([X, 0])[0]

# output in train mode = 1
layer_output = get_3rd_layer_output([X, 1])[0]

然后你只需要使用例如将预测存储在文件中。 np.save('filename.npz',intermediate_output )