使用Keras 实现查看model weights .h5 文件的内容


Posted in Python onJune 09, 2020

Keras的模型是用hdf5存储的,如果想要查看模型,keras提供了get_weights的函数可以查看:

for layer in model.layers: weights = layer.get_weights() # list of numpy array

而通过hdf5模块也可以读取:hdf5的数据结构主要是File - Group - Dataset三级,具体操作API可以看官方文档。weights的tensor保存在Dataset的value中,而每一集都会有attrs保存各网络层的属性:

import h5py
 
def print_keras_wegiths(weight_file_path):
  f = h5py.File(weight_file_path) # 读取weights h5文件返回File类
  try:
    if len(f.attrs.items()):
      print("{} contains: ".format(weight_file_path))
      print("Root attributes:")
    for key, value in f.attrs.items():
      print(" {}: {}".format(key, value)) # 输出储存在File类中的attrs信息,一般是各层的名称
 
    for layer, g in f.items(): # 读取各层的名称以及包含层信息的Group类
      print(" {}".format(layer))
      print("  Attributes:")
      for key, value in g.attrs.items(): # 输出储存在Group类中的attrs信息,一般是各层的weights和bias及他们的名称
        print("   {}: {}".format(key, value)) 
 
      print("  Dataset:")
      for name, d in g.items(): # 读取各层储存具体信息的Dataset类
        print("   {}: {}".format(name, d.value.shape)) # 输出储存在Dataset中的层名称和权重,也可以打印dataset的attrs,但是keras中是空的
        print("   {}: {}".format(name. d.value))
  finally:
    f.close()

而如果想修改某个值,则需要通过新建File类,然后用create_group, create_dataset函数将信息重新写入,具体操作可以查看这篇文章

补充知识:keras load model 并保存特定层 (pop) 的权重save new_model

有时候我们保存模型(save model),会保存整个模型输入到输出的权重,如果,我们不想保存后几层的参数,保存成新的模型。

import keras
from keras.models import Model, load_model
from keras.layers import Input, Dense
from keras.optimizers import RMSprop
import numpy as np

创建原始模型并保存权重

inputs = Input((1,))
dense_1 = Dense(10, activation='relu')(inputs)
dense_2 = Dense(10, activation='relu')(dense_1)
dense_3 = Dense(10, activation='relu')(dense_2)
outputs = Dense(10)(dense_3)

model = Model(inputs=inputs, outputs=outputs)
model.compile(optimizer=RMSprop(), loss='mse')
model.save('test.h5')

加载模型并对模型进行调整

loaded_model = load_model('test.h5')
loaded_model.layers.pop()
loaded_model.layers.pop()

此处去掉了最后两层--dense_3, dense_2。

创建新的model并加载修改后的模型

new_model = Model(inputs=inputs, outputs=dense_1)
new_model.compile(optimizer=RMSprop(), loss='mse')
new_model.set_weights(loaded_model.get_weights())

new_model.summary()
new_model.save('test_complete.h5')

以上这篇使用Keras 实现查看model weights .h5 文件的内容就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python中使用smtplib和email模块发送邮件实例
Apr 22 Python
python的tkinter布局之简单的聊天窗口实现方法
Sep 03 Python
python 爬取微信文章
Jan 30 Python
Python实现加载及解析properties配置文件的方法
Mar 29 Python
python-itchat 获取微信群用户信息的实例
Feb 21 Python
python实现控制COM口的示例
Jul 03 Python
python实现文本进度条 程序进度条 加载进度条 单行刷新功能
Jul 03 Python
python hough变换检测直线的实现方法
Jul 12 Python
Django文件存储 自己定制存储系统解析
Aug 02 Python
Python异常模块traceback用法实例分析
Oct 22 Python
Java ExcutorService优雅关闭方式解析
May 30 Python
使用python批量修改XML文件中图像的depth值
Jul 22 Python
Python使用Chrome插件实现爬虫过程图解
Jun 09 #Python
Python导入数值型Excel数据并生成矩阵操作
Jun 09 #Python
Python带参数的装饰器运行原理解析
Jun 09 #Python
Python sorted对list和dict排序
Jun 09 #Python
python初步实现word2vec操作
Jun 09 #Python
Python生成随机验证码代码实例解析
Jun 09 #Python
在python下实现word2vec词向量训练与加载实例
Jun 09 #Python
You might like
使用无限生命期Session的方法
2006/10/09 PHP
动态生成gif格式的图像要注意?
2006/10/09 PHP
php 邮件发送问题解决
2014/03/22 PHP
PHP中overload与override的区别
2017/02/13 PHP
调用HttpHanlder的几种返回方式小结
2013/12/20 Javascript
Extjs中RowExpander控件的默认展开问题示例探讨
2014/01/24 Javascript
javascript中的this详解
2014/12/08 Javascript
JavaScript实现页面跳转的方式汇总
2016/05/16 Javascript
JavaScript判断数字是否为质数的方法汇总
2016/06/02 Javascript
ExtJs异步无法向外传值和赋值的完美解决办法
2017/06/14 Javascript
在vue中读取本地Json文件的方法
2018/09/06 Javascript
jquery获取file表单选择文件的路径、名字、大小、类型
2019/01/18 jQuery
JS实现星星海特效
2019/12/24 Javascript
JavaScript实现滑块验证解锁
2021/01/07 Javascript
[51:36]EG vs VP 2018国际邀请赛淘汰赛BO3 第一场 8.24
2018/08/25 DOTA
[40:04]Secret vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
python实现socket端口重定向示例
2014/02/10 Python
Python 包含汉字的文件读写之每行末尾加上特定字符
2016/12/12 Python
Python二叉树的定义及常用遍历算法分析
2017/11/24 Python
详解Django中六个常用的自定义装饰器
2018/07/04 Python
啥是佩奇?使用Python自动绘画小猪佩奇的代码实例
2019/02/20 Python
可自定义箭头样式的CSS3气泡提示框
2016/03/16 HTML / CSS
伦敦平价潮流珠宝首饰品牌:Astrid & Miyu
2016/10/10 全球购物
Emporio Armani腕表天猫官方旗舰店:乔治·阿玛尼为年轻人设计的副线品牌
2017/07/02 全球购物
环保建议书
2014/03/12 职场文书
合作经营协议书范本
2014/04/17 职场文书
中学优秀班主任事迹材料
2014/05/01 职场文书
平安建设工作方案
2014/06/02 职场文书
欢迎横幅标语
2014/06/17 职场文书
优秀大专毕业生求职信
2014/08/04 职场文书
房屋出租委托书格式
2014/09/23 职场文书
上课说话检讨书
2015/01/27 职场文书
纪律委员竞选稿
2015/11/19 职场文书
多人股份制合作协议书
2016/03/19 职场文书
Spring Boot 实现敏感词及特殊字符过滤处理
2021/06/29 Java/Android
解决Vmware虚拟机安装centos8报错“Section %Packages Does Not End With %End. Pane Is Dead”
2022/06/01 Servers