使用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中编写数据库模块的教程
Apr 29 Python
Python函数可变参数定义及其参数传递方式实例详解
May 25 Python
Django中间件实现拦截器的方法
Jun 01 Python
python自动发送邮件脚本
Jun 20 Python
详解Python 函数如何重载?
Apr 23 Python
用python生成与调用cntk模型代码演示方法
Aug 26 Python
pytorch 准备、训练和测试自己的图片数据的方法
Jan 10 Python
Python实现多线程下载脚本的示例代码
Apr 03 Python
tensorflow指定CPU与GPU运算的方法实现
Apr 21 Python
python 中关于pycharm选择运行环境的问题
Oct 31 Python
python爬虫筛选工作实例讲解
Nov 23 Python
python 实时调取摄像头的示例代码
Nov 25 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实现WEB动态网页静态
2006/10/09 PHP
php入门学习知识点五 关于php数组的几个基本操作
2011/07/14 PHP
在PHP中使用redis
2013/11/04 PHP
php二维数组排序方法(array_multisort usort)
2013/12/25 PHP
使用新浪微博API的OAuth认证发布微博实例
2015/03/27 PHP
php为字符串前后添加指定数量字符的方法
2015/05/04 PHP
浅析PHP中Session可能会引起并发问题
2015/07/23 PHP
PHP+Mysql+jQuery文件下载次数统计实例讲解
2015/10/10 PHP
关于php几种字符串连接的效率比较(详解)
2017/02/22 PHP
ThinkPHP6.0如何利用自定义验证规则规范的实现登陆
2020/12/16 PHP
如何学习Javascript入门指导
2013/11/01 Javascript
node.js中的events.emitter.removeAllListeners方法使用说明
2014/12/10 Javascript
jQuery后代选择器用法实例
2014/12/23 Javascript
基于jquery实现页面滚动到底自动加载数据的功能
2015/12/19 Javascript
JavaScript实现下拉菜单的显示和隐藏
2016/01/05 Javascript
JS获取IMG图片高宽的简单实例
2016/05/17 Javascript
使用jQuery和ajax代替iframe的方法(详解)
2017/04/12 jQuery
微信小程序实现根据字母选择城市功能
2017/08/16 Javascript
JavaScript十大取整方法实例教程
2020/12/03 Javascript
[02:55]DOTA2英雄基础教程 发条技师
2013/12/04 DOTA
Python实用日期时间处理方法汇总
2015/05/09 Python
python给微信好友定时推送消息的示例
2019/02/20 Python
简单了解python的一些位运算技巧
2019/07/13 Python
如何获取Python简单for循环索引
2019/11/21 Python
python读取mysql数据绘制条形图
2020/03/25 Python
Python的轻量级ORM框架peewee使用教程
2021/02/05 Python
美国优质宠物用品购买网站:Muttropolis
2020/02/17 全球购物
瑞士网球商店:Tennis-Point
2020/03/12 全球购物
初中生三年学习生活的自我评价
2013/11/03 职场文书
《长江之歌》教学反思
2014/04/17 职场文书
2014国庆黄金周超市促销活动方案
2014/09/21 职场文书
大学生见习报告总结
2014/11/04 职场文书
2016廉洁教育心得体会
2016/01/20 职场文书
2019年12月24日平安夜祝福语集锦
2019/12/24 职场文书
苹果M1芯片安装nginx 并且部署vue项目步骤详解
2021/11/20 Servers
详解MySql中InnoDB存储引擎中的各种锁
2022/02/12 MySQL