使用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之入门(二)基本数据类型
May 25 Python
详谈Python基础之内置函数和递归
Jun 21 Python
Python如何快速实现分布式任务
Jul 06 Python
Python字符串拼接六种方法介绍
Dec 18 Python
python中for用来遍历range函数的方法
Jun 08 Python
python dataframe常见操作方法:实现取行、列、切片、统计特征值
Jun 09 Python
pandas DataFrame 删除重复的行的实现方法
Jan 29 Python
Python实现定制自动化业务流量报表周报功能【XlsxWriter模块】
Mar 11 Python
PyQt QCombobox设置行高的方法
Jun 20 Python
详解Selenium+PhantomJS+python简单实现爬虫的功能
Jul 14 Python
基于Pycharm加载多个项目过程图解
Jan 19 Python
详解Django中的FBV和CBV对比分析
Mar 01 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
php递归实现无限分类生成下拉列表的函数
2010/08/08 PHP
PHP setcookie设置Cookie用法(及设置无效的问题)
2011/07/13 PHP
php实现的一个很好用HTML解析器类可用于采集数据
2013/09/23 PHP
解决laravel id非自增 模型取回为0 的问题
2019/10/11 PHP
PHP读取文件,解决中文乱码UTF-8的方法分析
2020/01/22 PHP
checkbox 多选框 联动实现代码
2008/10/22 Javascript
jQuery ui1.7 dialog只能弹出一次问题
2009/08/27 Javascript
javascript中的prototype属性使用说明(函数功能扩展)
2010/08/16 Javascript
JavaScript静态类型检查工具FLOW简介
2015/01/06 Javascript
JavaScript测试工具之Karma-Jasmine的安装和使用详解
2015/12/03 Javascript
JavaScript实现瀑布流布局
2020/06/28 Javascript
jQuery控制div实现随滚动条滚动效果
2016/06/07 Javascript
JavaScript中有关一个数组中最大值和最小值及它们的下表的输出的解决办法
2016/07/01 Javascript
Jquery删除css属性的简单方法
2016/12/04 Javascript
用jquery的attr方法实现图片切换效果
2017/02/05 Javascript
Vue代码分割懒加载的实现方法
2017/11/23 Javascript
在Vue中使用Compass的方法
2018/03/02 Javascript
小程序云开发部署攻略(图文教程)
2018/10/30 Javascript
React Hooks的深入理解与使用
2018/11/12 Javascript
vue2.0+SVG实现音乐播放圆形进度条组件
2019/09/21 Javascript
vue element 关闭当前tab 跳转到上一路由操作
2020/07/22 Javascript
JS如何监听div的resize事件详解
2020/12/03 Javascript
[42:20]2014 DOTA2华西杯精英邀请赛5 24 DK VS NewBee
2014/05/25 DOTA
简单介绍Python的轻便web框架Bottle
2015/04/08 Python
pyqt5 实现工具栏文字图片同时显示
2019/06/13 Python
django自带调试服务器的使用详解
2019/08/29 Python
Django框架HttpResponse对象用法实例分析
2019/11/01 Python
对tensorflow中的strides参数使用详解
2020/01/04 Python
美国羊皮公司:Overland
2018/01/15 全球购物
俄罗斯苹果优质经销商商店:iPort
2020/05/27 全球购物
Ibatis中如何提高SQL Map的性能
2013/05/11 面试题
采购主管的岗位职责
2013/12/17 职场文书
幼儿园教师国培感言
2014/02/02 职场文书
文明村创建实施方案
2014/03/27 职场文书
QQ空间主人寄语大全
2014/04/12 职场文书
社区党建工作方案
2014/06/10 职场文书