使用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 相关文章推荐
Python3实现Web网页图片下载
Jan 28 Python
python 开发的三种运行模式详细介绍
Jan 18 Python
python中 logging的使用详解
Oct 25 Python
一条命令解决mac版本python IDLE不能输入中文问题
May 15 Python
Python3 jupyter notebook 服务器搭建过程
Nov 30 Python
详解python数据结构和算法
Apr 18 Python
利用Python实现Shp格式向GeoJSON的转换方法
Jul 09 Python
pytorch 利用lstm做mnist手写数字识别分类的实例
Jan 10 Python
ipython jupyter notebook中显示图像和数学公式实例
Apr 15 Python
你需要学会的8个Python列表技巧
Jun 24 Python
Python unittest如何生成HTMLTestRunner模块
Sep 08 Python
Python爬虫之App爬虫视频下载的实现
Dec 08 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字符串的编码问题的详细介绍
2013/04/27 PHP
yii2 modal弹窗之ActiveForm ajax表单异步验证
2016/06/13 PHP
利用PHP判断是手机移动端还是PC端访问的函数示例
2017/12/14 PHP
PHP递归遍历文件夹去除注释并压缩php源代码的方法示例
2018/05/23 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
2020/02/27 PHP
jquery简单体验
2007/01/10 Javascript
JavaScript高级程序设计(第3版)学习笔记12 js正则表达式
2012/10/11 Javascript
JavaScript实现强制重定向至HTTPS页面
2015/06/10 Javascript
jquery基础知识第一讲之认识jquery
2016/03/17 Javascript
聊一聊JavaScript作用域和作用域链
2016/05/03 Javascript
Vue2.0 axios前后端登陆拦截器(实例讲解)
2017/10/27 Javascript
Angular4的输入属性与输出属性实例详解
2017/11/29 Javascript
10行原生JS实现文字无缝滚动(超简单)
2018/01/02 Javascript
浅谈React中组件间抽象
2018/01/27 Javascript
用VueJS写一个Chrome浏览器插件的实现方法
2019/02/27 Javascript
node.js中express模块创建服务器和http模块客户端发请求
2019/03/06 Javascript
Nuxt.js实战和配置详解
2019/08/05 Javascript
layui使用form表单实现post请求页面跳转的方法
2019/09/14 Javascript
JS实现可视化音频效果的实例代码
2020/01/16 Javascript
JS 5种遍历对象的方式
2020/06/16 Javascript
简介Django中内置的一些中间件
2015/07/24 Python
Python实现的简单读写csv文件操作示例
2018/07/12 Python
Python中的Django基本命令实例详解
2018/07/15 Python
python实现简易淘宝购物
2019/11/22 Python
python读取文件指定行内容实例讲解
2020/03/02 Python
python实现梯度下降法
2020/03/24 Python
CSS3实现div从下往上滑入滑出效果示例
2020/04/28 HTML / CSS
利用 Canvas实现绘画一个未闭合的带进度条的圆环
2019/07/26 HTML / CSS
全球最大的服务市场:Fiverr
2017/01/03 全球购物
德国网上药房:Apotal
2017/04/04 全球购物
在网上学习全世界最好的课程:Coursera
2017/11/07 全球购物
芝加哥牛排公司:Chicago Steak Company
2018/10/31 全球购物
彪马俄罗斯官网:PUMA俄罗斯
2019/07/13 全球购物
计算机网络专业求职信
2014/06/05 职场文书
上学路上观后感
2015/06/16 职场文书
python入门学习关于for else的特殊特性讲解
2021/11/20 Python