给keras层命名,并提取中间层输出值,保存到文档的实例

 更新时间:2020年05月23日 09:29:43   转载 作者:firstandsecond  
这篇文章主要介绍了给keras层命名,并提取中间层输出值,保存到文档的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

更新:

感谢评论区提供的方案。

采用model.summary(),model.get_config()和for循环均可获得Keras的层名。

示例如下图

对于keras特定层的命名,只需在层内添加 name 即可

model.add(Activation('softmax',name='dense_1') )  # 注意 name 要放于函数内

#提取中间层
from keras.models import Model
import keras
layer_name = 'dense_1' #获取层的名称
intermediate_layer_model = Model(inputs=model.input, 
         outputs=model.get_layer(layer_name).output)#创建的新模型
intermediate_output = intermediate_layer_model.predict(X_test)

doc = open(r'C://Users//CCUT04//Desktop//1.txt','w')
for i in intermediate_output:
 print(i)
 print(i , file = doc)
doc.close()

补充知识:关于用keras提取NN中间layer输出

Build model...
__________________________________________________________________________________________________
Layer (type)     Output Shape   Param #  Connected to      
==================================================================================================
main_input (InputLayer)   (None, 89, 39)  0           
__________________________________________________________________________________________________
cropping1d_1 (Cropping1D)  (None, 85, 39)  0   main_input[0][0]     
__________________________________________________________________________________________________
cropping1d_2 (Cropping1D)  (None, 85, 39)  0   main_input[0][0]     
__________________________________________________________________________________________________
cropping1d_3 (Cropping1D)  (None, 85, 39)  0   main_input[0][0]     
__________________________________________________________________________________________________
cropping1d_4 (Cropping1D)  (None, 85, 39)  0   main_input[0][0]     
__________________________________________________________________________________________________
cropping1d_5 (Cropping1D)  (None, 85, 39)  0   main_input[0][0]     
__________________________________________________________________________________________________
concatenate_1 (Concatenate)  (None, 85, 195)  0   cropping1d_1[0][0]    
                 cropping1d_2[0][0]    
                 cropping1d_3[0][0]    
                 cropping1d_4[0][0]    
                 cropping1d_5[0][0]    
__________________________________________________________________________________________________
fc1 (BatchNormalization)  (None, 85, 195)  780   concatenate_1[0][0]    
__________________________________________________________________________________________________
fc2 (Bidirectional)    (None, 85, 2048)  9994240  fc1[0][0]      
__________________________________________________________________________________________________
fc3 (BatchNormalization)  (None, 85, 2048)  8192  fc2[0][0]      
__________________________________________________________________________________________________
global_average_pooling1d_1 (Glo (None, 2048)   0   fc3[0][0]      
__________________________________________________________________________________________________
main_output (Dense)    (None, 2)   4098  global_average_pooling1d_1[0][0] 
==================================================================================================
Total params: 10,007,310
Trainable params: 10,002,824
Non-trainable params: 4,486
__________________________________________________________________________________________________

假设我网络层数是上面这个结构.

如果我想得到pooling的输出, keras上有两张方法。

intermediate_layer_model = Model(inputs=model.input,outputs=model.get_layer(str('global_average_pooling1d_1')).output)
#model.summary()
#model.get_layer(str('cropping1d_1'))
intermediate_output = intermediate_layer_model.predict(data)

data是你的输入所用的数据....

from keras import backend as K
get_11rd_layer_output = K.function([model.layers[0].input],
         [model.layers[10].output])
layer_output = get_11rd_layer_output([data])[0]

我这里第10层是Pooling层.

这两个代码的output是一样的..

一般我看人用的都是第二个...

以上这篇给keras层命名,并提取中间层输出值,保存到文档的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • python3.4+pycharm 环境安装及使用方法

    python3.4+pycharm 环境安装及使用方法

    这篇文章主要介绍了python3.4+pycharm 环境安装及使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-06-06
  • 分析运行中的 Python 进程详细解析

    分析运行中的 Python 进程详细解析

    这篇文章主要介绍了分析运行中的 Python 进程,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-06-06
  • python GUI库图形界面开发之PyQt5下拉列表框控件QComboBox详细使用方法与实例

    python GUI库图形界面开发之PyQt5下拉列表框控件QComboBox详细使

    这篇文章主要介绍了python GUI库图形界面开发之PyQt5下拉列表框控件QComboBox详细使用方法与实例,需要的朋友可以参考下
    2020-02-02
  • Python求两个字符串最长公共子序列代码实例

    Python求两个字符串最长公共子序列代码实例

    这篇文章主要介绍了Python求两个字符串最长公共子序列代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • django传值给模板, 再用JS接收并进行操作的实例

    django传值给模板, 再用JS接收并进行操作的实例

    今天小编就为大家分享一篇django传值给模板, 再用JS接收并进行操作的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • python利用elaphe制作二维条形码实现代码

    python利用elaphe制作二维条形码实现代码

    条形码的应用将会越来越广泛,看到了一篇文章,写的挺好的!用手机拍二维码,查二维码确实很爽!这将成为一种潮流
    2012-05-05
  • pycharm无法导入本地模块的解决方式

    pycharm无法导入本地模块的解决方式

    今天小编就为大家分享一篇pycharm无法导入本地模块的解决方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • python 非线性规划方式(scipy.optimize.minimize)

    python 非线性规划方式(scipy.optimize.minimize)

    今天小编就为大家分享一篇python 非线性规划方式(scipy.optimize.minimize),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • python pytest进阶之fixture详解

    python pytest进阶之fixture详解

    这篇文章主要介绍了python pytest进阶之fixture详解,学pytest就不得不说fixture,fixture是pytest的精髓所在,就像unittest中的setup和teardown一样,如果不学fixture那么使用pytest和使用unittest是没什么区别的,需要的朋友可以参考下
    2019-06-06
  • 详解Ubuntu环境下部署Django+uwsgi+nginx总结

    详解Ubuntu环境下部署Django+uwsgi+nginx总结

    这篇文章主要介绍了Ubuntu环境下部署Django+uwsgi+nginx总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04

最新评论