使用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服务器拒绝服务攻击代码
Jan 16 Python
Python操作列表的常用方法分享
Feb 13 Python
Python中变量交换的例子
Aug 25 Python
python中二维阵列的变换实例
Oct 09 Python
10个易被忽视但应掌握的Python基本用法
Apr 01 Python
简单实现python进度条脚本
Dec 18 Python
python中使用%与.format格式化文本方法解析
Dec 27 Python
在Python中给Nan值更改为0的方法
Oct 30 Python
Django如何实现网站注册用户邮箱验证功能
Aug 14 Python
python基于tkinter制作无损音乐下载工具
Mar 29 Python
Python实现简单的猜单词
Jun 15 Python
 python中的元类metaclass详情
May 30 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
上海牌131型七灯四波段四喇叭一级收音机
2021/03/02 无线电
PHP4中实现动态代理
2006/10/09 PHP
JS实现php的伪分页
2008/05/25 PHP
ThinkPHP采用模块和操作分析
2011/04/18 PHP
laravel框架中视图的基本使用方法分析
2019/11/23 PHP
索趣科技的答案
2007/02/07 Javascript
javascript数组使用调用方法汇总
2007/12/08 Javascript
单独使用CKFinder选择图片的方法
2010/08/21 Javascript
我的Node.js学习之路(四)--单元测试
2014/07/06 Javascript
让浏览器DOM元素最后加载的js方法
2014/07/29 Javascript
jQuery实现返回顶部效果的方法
2015/05/29 Javascript
Javascript的表单验证-初识正则表达式
2016/03/18 Javascript
js中less常用的方法小结
2017/08/09 Javascript
vue中post请求以a=a&b=b 的格式写遇到的问题
2018/04/27 Javascript
react中使用swiper的具体方法
2018/05/15 Javascript
element-ui 文件上传修改文件名的方法示例
2019/11/05 Javascript
解决Vue-cli无法编译es6的问题
2020/10/30 Javascript
JavaScript实现移动端拖动元素
2020/11/24 Javascript
[01:33]DOTA2上海特级锦标赛 LIQUID战队完整宣传片
2016/03/16 DOTA
[32:36]完美世界DOTA2联赛PWL S3 LBZS vs CPG 第二场 12.12
2020/12/16 DOTA
Python 正则表达式入门(中级篇)
2016/12/07 Python
简单了解Django模板的使用
2017/12/20 Python
python实现基于SVM手写数字识别功能
2020/05/27 Python
Django使用模板后无法找到静态资源文件问题解决
2019/07/19 Python
python获取指定日期范围内的每一天,每个月,每季度的方法
2019/08/08 Python
python 实现视频 图像帧提取
2019/12/10 Python
pytorch 实现查看网络中的参数
2020/01/06 Python
巴西在线鞋店:Shoestock
2017/10/28 全球购物
shell程序中如何注释
2012/01/28 面试题
高等教育学自荐书范文
2014/02/10 职场文书
《三亚落日》教学反思
2014/04/26 职场文书
市场营销专业毕业生求职信
2014/07/21 职场文书
镇创先争优活动总结
2014/08/28 职场文书
社区领导班子四风问题原因分析及整改措施
2014/09/28 职场文书
房屋租赁合同协议书范本
2014/10/19 职场文书
小学体育教学随笔
2015/08/14 职场文书