2017-05-31 59 views

回答

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函数。

请注意,如果您的模型在训练和 测试阶段不同的行为(例如,如果它使用差,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] 

然后你只需要将你的预测存储在一个文件中使用eg np.save('filename.npz',intermediate_output)

相关问题