美文网首页
Keras 获取中间层输出

Keras 获取中间层输出

作者: Matrix0 | 来源:发表于2020-08-20 21:38 被阅读0次

    一种简单的方法是创建一个新的Model,使得它的输出是你想要的那个输出

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

    也可以建立一个Keras的函数来达到这一目的:

    from keras import backend as K
    
    # with a Sequential model
    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)层等组件,你需要在函数中传递一个learning_phase的标记,像这样:

    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]
    

    只是搬运这些,当做自己的笔记用,具体参考keras文档

    相关文章

      网友评论

          本文标题:Keras 获取中间层输出

          本文链接:https://www.haomeiwen.com/subject/zroejktx.html