我是在实际工程中要用到tensorflow训练的pb模型,但是训练的代码是用keras写的,所以生成keras特定的h5模型,所以用到了h5_to_pb.py函数。
附上h5_to_pb.py(python3)

#*-coding:utf-8-*"""
将keras的.h5的模型文件,转换成TensorFlow的pb文件
"""
# ==========================================================from keras.models import load_model
import tensorflow as tf
import os.path as osp
import os
from keras import backend
#from keras.models import Sequentialdef h5_to_pb(h5_model, output_dir, model_name, out_prefix="output_", log_tensorboard=True):""".h5模型文件转换成pb模型文件Argument:h5_model: str.h5模型文件output_dir: strpb模型文件保存路径model_name: strpb模型文件名称out_prefix: str根据训练,需要修改log_tensorboard: bool是否生成日志文件Return:pb模型文件"""if os.path.exists(output_dir) == False:os.mkdir(output_dir)out_nodes = []for i in range(len(h5_model.outputs)):out_nodes.append(out_prefix + str(i + 1))tf.identity(h5_model.output[i], out_prefix + str(i + 1))sess = backend.get_session()from tensorflow.python.framework import graph_util, graph_io# 写入pb模型文件init_graph = sess.graph.as_graph_def()main_graph = graph_util.convert_variables_to_constants(sess, init_graph, out_nodes)graph_io.write_graph(main_graph, output_dir, name=model_name, as_text=False)# 输出日志文件if log_tensorboard:from tensorflow.python.tools import import_pb_to_tensorboardimport_pb_to_tensorboard.import_to_tensorboard(os.path.join(output_dir, model_name), output_dir)if __name__ == '__main__':#  .h模型文件路径参数input_path = 'D:/CSP'weight_file = 'xingren.h5'weight_file_path = os.path.join(input_path, weight_file)output_graph_name = weight_file[:-3] + '.pb'#  pb模型文件输出输出路径output_dir = osp.join(os.getcwd(),"trans_model")#model.save(xingren.h5)#  加载模型#h5_model = Sequential()h5_model = load_model(weight_file_path)#h5_model.save(weight_file_path)#h5_model.save('xingren.h5')h5_to_pb(h5_model, output_dir=output_dir, model_name=output_graph_name)print ('Finished')

在运行的时候遇到了下面问题:

原因:我们训练模型的时候用save_weights函数保存模型,但是这个函数只保存了权重文件,并没有又保存模型的参数。要把save_weights改为save。

下边是两个函数介绍:
save()保存的模型结果,它既保持了模型的图结构,又保存了模型的参数。
save_weights()保存的模型结果,它只保存了模型的参数,但并没有保存模型的图结构

h5模型转化为pb模型,代码及排坑相关推荐

  1. pytorch .pth模型转tensorflow .pb模型

    训练好的pytorch模型如何转化为tensorflow的pb模型? 本人初步使用的是onnx框架: pytorch --->  onnx ----> tensorflow 使用onnx转 ...

  2. windows环境下将yolo-fatest的caffe模型转化为wk模型

    windows环境下将yolo-fatest的caffe模型转化为wk模型 第一步 第二步 第三步 第四步 在上一个博客https://blog.csdn.net/playezio/article/d ...

  3. 我的AI之路(44)--将tensorflow1.2版faster-rcnn模型freeze为pb模型的总结

    Faster-rcnn虽然是有点老了的网络,但是可以在有些硬件配置不高.计算资源有限的前端边缘板子上部署,而且也能满足一般的图像识别功能,所以有些项目还是需要用的.近来因项目需要实验研究了一下把fas ...

  4. Stackelberg博弈问题双层模型转化为MPEC模型的三种方法

    Stackelberg博弈问题双层模型转化为MPEC模型的三种方法 Stackelberg博弈问题的求解可以利用模型转换将下层问题以约束集的形式添加到上层优化中的三种方法. 1.构造 KKT条件 在进 ...

  5. Tensorflow训练神经网络保存*.pb模型及载入*.pb模型

    1 神经网络结构 1.0 保存*.pb模型 import tensorflow as tf from tensorflow.python.framework import graph_util fro ...

  6. 将训练好的模型转化为pb文件及pb应用

    1.相关资料 tensorflow的ckpt文件总结 1.TensorFlow的模型文件 --checkpoint_dir | |--checkpoint | |--MyModel.meta | |- ...

  7. m2cgen库:将Python(sklearn)训练的模型转化为C/C++代码

    m2cgen库:将机器学习模型转换为零依赖的本机代码(Java,C,Python,Go,JavaScript).本文演示将其转换为C/C++代码,使用sklearn机器学习库中的随机森林回归,训练波士 ...

  8. MxNet 模型转Tensorflow pb模型

    用mmdnn实现模型转换 参考链接:https://www.twblogs.net/a/5ca4cadbbd9eee5b1a0713af 安装mmdnn pip install mmdnn 准备好mx ...

  9. 移植facenet pb模型到android

    引子 前面已经写了几篇wiki介绍facenet人脸分类,但是并没有写到将其移植到android上.这篇就是记录如何将facenet移植到android的.其中经历了约两个月的时间.并遇到问题停止不前 ...

最新文章

  1. 影响堪比登月!谷歌等设计DL新方式让神经网络无限深无限窄
  2. Xcode搭建真机调试环境 图文实例
  3. php mail ld preload,读《利用环境变量LD_PRELOAD来绕过php disable_function执行系统命令》有感...
  4. 【案例分享】无线唤醒技术在灌溉系统上的应用案例
  5. apk获取服务器时间文件名,如何根据APK文件获取应用程序签名时间
  6. ​【文末有福利】股票跨度——真实世界的算法
  7. win10python3.6.3安装_Win10Python3.6安装impyla
  8. Spring-beans-FactoryBean
  9. Java 六种异常处理的陋习
  10. 腾讯QQ认证空间4月27日已全面开放申请,欲进军自媒体
  11. 完全卸载Oracle数据库步骤
  12. RCP中如何使用代码安装、运行plugins
  13. Java实现归并排序(转)
  14. Dubbo服务治理(一):限流策略
  15. 【安卓】2.修改app名、图标、主题风格(保姆级图文+附示例+api例程)
  16. 项目经理不得不知道的里程碑计划及其重要用途
  17. php screw.so,php screw加密
  18. Promethus(普罗米修斯)监控系统02概述
  19. MySql 删除索引
  20. 快速读懂Http3协议总结

热门文章

  1. 使用CSS去除 去掉超链接的下划线方法
  2. 业务流程监控的几点建议
  3. MySQL8.0 Optimizer Hints
  4. linux重装出现cannot load file 5555h,技术员教你解决win7系统重装开机提示cannot load file code:5555h的操作方案...
  5. failed to connect to ‘192.168.199.143:5555‘: Connection refused
  6. 结算系统业务监控实践
  7. Python3 初学实践案例(10)对象转字典 object to dict
  8. 快速提高网站排名工具大全
  9. 获取文件夹里图片的所有名称,并在Excel里进行统计
  10. 看的懂的scipy.sparse.csr_matrix和scipy.sparse.csc_matrix