使用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编写的最短路径算法
Mar 25 Python
简单的Python的curses库使用教程
Apr 11 Python
在Python的Django框架中调用方法和处理无效变量
Jul 15 Python
简单总结Python中序列与字典的相同和不同之处
Jan 19 Python
python常用函数详解
Sep 13 Python
Python排序搜索基本算法之选择排序实例分析
Dec 09 Python
Python神奇的内置函数locals的实例讲解
Feb 22 Python
Opencv实现抠图背景图替换功能
May 21 Python
图文详解Django使用Pycharm连接MySQL数据库
Aug 09 Python
python中调试或排错的五种方法示例
Sep 12 Python
Numpy一维线性插值函数的用法
Apr 22 Python
Python绘制词云图之可视化神器pyecharts的方法
Feb 23 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
与数据库连接
2006/10/09 PHP
php 遍历显示文件夹下所有目录、所有文件的函数,没有分页的代码
2008/11/14 PHP
浅谈php自定义错误日志
2015/02/13 PHP
php实现用于验证所有类型的信用卡类
2015/03/24 PHP
PHP判断是手机端还是PC端 PHP判断是否是微信浏览器
2017/03/15 PHP
关于PHP通用返回值设置方法
2017/03/31 PHP
PHP实现15位身份证号转18位的方法分析
2019/10/16 PHP
jQuery的链式调用浅析
2010/12/03 Javascript
Javascript编写2048小游戏
2015/07/07 Javascript
js实现商城星星评分的效果
2015/12/29 Javascript
悬浮广告方法日常收集整理
2016/03/18 Javascript
基于Turn.js 实现翻书效果实例解析
2016/06/20 Javascript
Bootstrap使用基础教程详解
2016/09/05 Javascript
基于BootStrap与jQuery.validate实现表单提交校验功能
2016/12/22 Javascript
Bootstrap3 多个模态对话框无法显示的解决方案
2017/02/23 Javascript
C#微信小程序服务端获取用户解密信息实例代码
2017/03/10 Javascript
Node.js 回调函数实例详解
2017/07/06 Javascript
详解Vue2.0配置mint-ui踩过的那些坑
2018/04/23 Javascript
ES6基础之数组和对象的拓展实例详解
2019/08/22 Javascript
用Python编写分析Python程序性能的工具的教程
2015/04/01 Python
Python实现的简单算术游戏实例
2015/05/26 Python
django项目运行因中文而乱码报错的几种情况解决
2017/11/07 Python
解决安装python库时windows error5 报错的问题
2018/10/21 Python
Python异常的检测和处理方法
2018/10/26 Python
python异步存储数据详解
2019/03/19 Python
Python面向对象总结及类与正则表达式详解
2019/04/18 Python
Python telnet登陆功能实现代码
2020/04/16 Python
Python库安装速度过慢解决方案
2020/07/14 Python
python中K-means算法基础知识点
2021/01/25 Python
CSS3属性选择符介绍
2008/10/17 HTML / CSS
英国女装网上商店:I Saw It First
2018/10/18 全球购物
在c#中using和new这两个关键字有什么意义
2013/05/19 面试题
大学应届生的自我评价
2014/03/06 职场文书
《海底世界》教学反思
2014/04/16 职场文书
教师考察材料范文
2014/06/03 职场文书
2016年精神文明建设先进个人事迹材料
2016/02/29 职场文书