我已经训练了权重矩阵,我想在每一层的每一端提取特征并将它们存储在一个文件中。我怎么能这样做?感谢。
答案 0 :(得分:0)
一种简单的方法是创建一个输出图层的新模型 你感兴趣的是:
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 )