使用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程序设计入门(3)数组的使用
Jun 16 Python
从源码解析Python的Flask框架中request对象的用法
Jun 02 Python
Django日志模块logging的配置详解
Feb 14 Python
一份python入门应该看的学习资料
Apr 11 Python
Django使用HttpResponse返回图片并显示的方法
May 22 Python
Python中的取模运算方法
Nov 10 Python
对python中list的拷贝与numpy的array的拷贝详解
Jan 29 Python
Python使用线程来接收串口数据的示例
Jul 02 Python
python 实现兔子生兔子示例
Nov 21 Python
将tensorflow.Variable中的某些元素取出组成一个新的矩阵示例
Jan 04 Python
使用python绘制cdf的多种实现方法
Feb 25 Python
pytorch 一行代码查看网络参数总量的实现
May 12 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
人族 TERRAN 概述
2020/03/14 星际争霸
PHP 字符截取 解决中文的截取问题,不用mb系列
2009/09/29 PHP
zf框架的数据库追踪器使用示例
2014/03/13 PHP
PHP原生函数一定好吗?
2014/12/08 PHP
编写针对IE的JS代码两种编写方法
2013/01/30 Javascript
jquery实现叠层3D文字特效代码分享
2015/08/21 Javascript
全面理解JavaScript中的继承(必看)
2016/06/16 Javascript
vue.js父组件使用外部对象的方法示例
2017/04/25 Javascript
Jquery把获取到的input值转换成json
2017/05/15 jQuery
使用3D引擎threeJS实现星空粒子移动效果
2020/09/13 Javascript
VUE Error: getaddrinfo ENOTFOUND localhost
2018/05/03 Javascript
深入解析koa之中间件流程控制
2019/06/17 Javascript
Nuxt.js实战和配置详解
2019/08/05 Javascript
async/await让异步操作同步执行的方法详解
2019/11/01 Javascript
深入理解python中的atexit模块
2017/03/07 Python
Python面向对象之继承代码详解
2018/01/29 Python
Python返回数组/List长度的实例
2018/06/23 Python
使用 Python 玩转 GitHub 的贡献板(推荐)
2019/04/04 Python
浅谈Pandas Series 和 Numpy array中的相同点
2019/06/28 Python
python实现切割url得到域名、协议、主机名等各个字段的例子
2019/07/25 Python
python实现静态web服务器
2019/09/03 Python
python使用pymongo与MongoDB基本交互操作示例
2020/04/09 Python
Pycharm连接远程服务器过程图解
2020/04/30 Python
美国新兴城市生活方式零售商:VILLA
2017/12/06 全球购物
New Balance加拿大官方网站:运动鞋和健身服装
2018/11/19 全球购物
尊老爱幼演讲稿
2014/09/04 职场文书
村干部四风问题整改措施
2014/09/30 职场文书
满月酒邀请函
2015/01/30 职场文书
税务会计岗位职责
2015/04/02 职场文书
2015年司机工作总结
2015/04/23 职场文书
班级联欢会主持词
2015/07/03 职场文书
党员电教片《信仰》心得体会
2016/01/15 职场文书
4种非常实用的python内置数据结构
2021/04/28 Python
MySQL连接控制插件介绍
2021/09/25 MySQL
游戏《我的世界》澄清Xbox版暂无计划加入光追
2022/04/03 其他游戏
铁拳制作人赞《铁拳7》老头环Mod:制作精良 但别弄了
2022/04/03 其他游戏