本文主要记录Keras训练得到的.h5模型文件转换成TensorFlow的.pb文件

  1. #*-coding:utf-8-*
  2. """
  3. 将keras的.h5的模型文件,转换成TensorFlow的pb文件
  4. """
  5. # ==========================================================
  6. from keras.models import load_model
  7. import tensorflow as tf
  8. import os
  9. from keras import backend
  10. def h5_to_pb(h5_model, output_dir, model_name, out_prefix="output_", log_tensorboard=True):
  11. """.h5模型文件转换成pb模型文件
  12. Argument:
  13. h5_model: str
  14. .h5模型文件
  15. output_dir: str
  16. pb模型文件保存路径
  17. model_name: str
  18. pb模型文件名称
  19. out_prefix: str
  20. 根据训练,需要修改
  21. log_tensorboard: bool
  22. 是否生成日志文件
  23. Return:
  24. pb模型文件
  25. """
  26. if os.path.exists(output_dir) == False:
  27. os.mkdir(output_dir)
  28. out_nodes = []
  29. for i in range(len(h5_model.outputs)):
  30. out_nodes.append(out_prefix + str(i + 1))
  31. tf.identity(h5_model.output[i], out_prefix + str(i + 1))
  32. sess = backend.get_session()
  33. from tensorflow.python.framework import graph_util, graph_io
  34. # 写入pb模型文件
  35. init_graph = sess.graph.as_graph_def()
  36. main_graph = graph_util.convert_variables_to_constants(sess, init_graph, out_nodes)
  37. graph_io.write_graph(main_graph, output_dir, name=model_name, as_text=False)
  38. # 输出日志文件
  39. if log_tensorboard:
  40. from tensorflow.python.tools import import_pb_to_tensorboard
  41. import_pb_to_tensorboard.import_to_tensorboard(os.path.join(output_dir, model_name), output_dir)
  42. if __name__ == '__main__':
  43. # .h模型文件路径参数
  44. input_path = 'satellite/train_dir/models/'
  45. weight_file = 'satellite_iv3_ft.h5'
  46. weight_file_path = os.path.join(input_path, weight_file)
  47. output_graph_name = weight_file[:-3] + '.pb'
  48. # pb模型文件输出输出路径
  49. output_dir = os.path.join(os.getcwd(), "satellite/train_dir/models/")
  50. # 加载模型
  51. h5_model = load_model(weight_file_path)
  52. h5_to_pb(h5_model, output_dir=output_dir, model_name=output_graph_name)
  53. print('Finished')

h5模型文件转换成pb模型文件的更多相关文章

  1. Linux中将一个GBK编码的文件转换成UTF-8编码文件

    Linux中将一个GBK编码的文件转换成UTF-8编码文件 使用iconv 命令iconv -f GBK -t UTF-8 file1 -o file2 输出另一个文件,然后再覆盖源文件内容

  2. 把TXT GB2312文件转换成TXT UTF8文件

    /// <summary>        /// 把TXT GB2312文件转换成TXT UTF8文件        /// </summary>        /// < ...

  3. Python3.6安装protobuf模块+将proto文件转换成pb2.py文件

    Python对版本的对应即为苛刻,笔者第一次安装时遇到了很多坑,比如无法将proto文件转换成py文件,转换了之后文件无法使用,网上各种各样的解决办法都没有讲到重点.其实会出现各种各样的问题是由于版本 ...

  4. C#:将.csv格式文件转换成.xlsx格式文件

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  5. 【转】java将excel文件转换成txt格式文件

    在实际应用中,我们难免会遇到解析excel文件入库事情,有时候为了方便,需要将excel文件转成txt格式文件.下面代码里面提供对xls.xlsx两种格式的excel文件解析,并写入到一个新的txt文 ...

  6. .net amr格式文件转换成mp3格式文件的方法

    前言:winform端对于音频文件的格式多有限制,大多数不支持amr格式的文件的播放.但是,手机端传过来的音频文件大多数是amr格式的文件,所以,要想在winform客户端支持音频文件的播放,可以通过 ...

  7. 在windows 下将 chm 格式的文件 转换成 html 的文件

    有时我们可能需要将 chm 格式的文件 转换成 html 格式的网页文件,这时,如果你使用的是 windows 操作系统,那就可以用 windows 操作系统自带的反编译工具来完成这项任务,具体步骤: ...

  8. 将.lib库文件转换成.a库文件的工具

    分享如下两个链接: 微盘: http://vdisk.weibo.com/s/ztzPTJIC52mz2 百度云盘: http://pan.baidu.com/s/11gTOc 使用方法,解压文件mi ...

  9. python3将docx转换成pdf,html文件,pdf转doc文件

    直接上代码 # -*- encoding:utf-8 -*- """ author:lgh 简单的doc转pdf,html,pdf转doc脚本 依赖库pdfminer3k ...

随机推荐

  1. 推荐20个非常有帮助的web前端开发教程

    1. CSS Vocabulary 一个伟大的指向和点击的小应用程序,让你加高速度掌握 CSS 语法的各个不同部分,学习各个属性的正确的名称. 2. Liquidapsive 一个简单的信息化布局.通 ...

  2. Memcached的优点

    核心知识点 memcached总的特点:简单.稳定.专注 1.简单的通信协议 a.通信协议:TCP b.序列化协议:文本的自定义协议 2.丰富的客户端程序:几乎支持所有的网络编程语言 3.高性能的网络 ...

  3. requests不加代理

    requests里的proxies不加代理可以设置为空,就会使用本机IP proxies={}

  4. 编译debian内核

    玩腻了开发板,在pc上编译linux内核. debian 官方的内核文档见http://kernel-handbook.alioth.debian.org 我选择编译与当前内核版本对应的linux内核 ...

  5. 纯CSS3实现淡入淡出下拉菜单

    纯CSS3实现淡入淡出下拉菜单是一款比较简单清新的CSS3教程下拉菜单,这款下拉菜单是垂直方向的,点击主菜单项可以展开和折叠子菜单,在展开折叠的过程中伴随着淡入淡出的动画效果 源代码:http://w ...

  6. 分享知识-快乐自己:Hibernate各种查询操作

    Hibernate各种查询操作(一) 测试数据库如下: t_sort表:                                   t_good表: 一.对象导航方式查询 查询所有食品类下面 ...

  7. Python 使用正则表达式验证密码必须包含大小写字母和数字

    校验密码是否合法的程序. 输入一个密码 1.长度5-10位 2.密码里面必须包含,大写字母.小写字母和数字 3.最多输入5次 ===================================== ...

  8. windows与Linux操作系统的差别

    用户需要记住:Linux和Windows在设计上就存在哲学性的区别.Windows操作系统 倾向于将更多的功能集成到操作系统内部,并将程序与内核相结合:而Linux不同 于Windows,它的内核空间 ...

  9. listen 57

    Secondhand Smoke Exposure Doubled Asthmatic Kids' Hospital Readmissions If your child has asthma哮喘, ...

  10. css书写规则

    无规矩不成方圆,不管有多少人共同参与同一项目,一定要确保每一行代码都像是同一个人编写的 不要在自闭合(self-closing)元素的尾部添加斜线 不要省略可选的结束标签(closing tag)(例 ...