原文地址:https://blog.csdn.net/chenyuping333/article/details/82106863
目录

一、导出前向传播图

二、对模型进行固化

三、pb文件转tflite文件

说明:接我的上一篇博客:tensorflow深度学习实战笔记(一):使用tensorflow slim自带的模型训练自己的数据

前面讲解了如何用tensorflow slim训练自己的模型,现在讲解如何把训练好的模型的cpkt文件固化成pb文件(即最终的模型)

一、导出前向传播图
在slim文件夹下有export_inference_graph.py文件(slim文件夹的位置可以参考我的上一篇博客),运行该脚本即可导出前向传播图,运行方式如下:

python export_inference_graph.py
–alsologtostderr
–dataset_dir=/home/yuping-chen/slim/my_data/fruits/ #数据集的路径
–dataset_name=fruit #数据集的名字
–model_name=inception_v3 #导出的模型
–image_size=224 #图片尺寸
–output_file=my_model/inception_v3_inf.pb#输出文件名,可以自定义
运行结束后即可在你指定的位置生成相应的pb文件,这个文件是前向传播图,并没有参数,所以也不是最终的模型,因此文件较小。

二、对模型进行固化
对上面生成的前向传播图进行固化,即把cpkt文件的参数导入到前向传播图中得到最终的模型,固化方式有两种,一是使用tensorflow自带的脚本,二是使用bazel工具。

两种方式差不多,只是使用的方式不一样,只有第一行不一样,其他的参数都是一样的。

2.1使用tensorflow自带的脚本进行固化
python -u /usr/local/lib/python2.7/dist-packages/tensorflow/python/tools/freeze_graph.py
–input_graph=/home/yuping-chen/slim/my_model/inception_v3_inf.pb #上一步的前向传播图
–input_checkpoint=/home/yuping-chen/slim/my_save_model/fruit-models/inception_v3_140/model.ckpt-68074 #自己训练的cpkt文件
–output_graph=/home/yuping-chen/slim/my_model/frozen_model/frozen_inception_v3.pb #最终的模型
–input_binary=True
–output_node_name=InceptionV3/Predictions/Reshape_1
2.2使用bazel工具进行固化
bazel的具体安装和使用请参考我的另一篇博客:tensorflow深度学习实战笔记(四):bazel编译tensorflow工具的使用方法

bazel-bin/tensorflow/python/tools/freeze_graph
–input_graph=/home/yuping-chen/slim/my_model/inception_v3_inf.pb #上一步的前向传播图
–input_checkpoint=/home/yuping-chen/slim/my_save_model/fruit-models/inception_v3_140/model.ckpt-68074 #自己训练的cpkt文件
–output_graph=/home/yuping-chen/slim/my_model/frozen_model/frozen_inception_v3.pb #最终的模型
–input_binary=True
–output_node_name=InceptionV3/Predictions/Reshape_1
运行结束后即可在你指定的位置生成相应的pb文件,这个文件是最终的模型,和前向传播图不同,治理包含了参数,因此文件会比较大。

2.3可能会遇到的问题
如果抛出诸如“lrs=[5],hrs[10]”类的错误([ ]中的内容也许会不同),说明cpkt输出类别数目10和前向传播图类别数目5不相等造成的,这是要检查你导入前向传播图的参数了,确认数据集类别数正确后在执行固化则不会报错。

三、pb文件转tflite文件
tflite模型相比于pb要精简的多,只是针对嵌入式平台进行的优化,对移植到嵌入式平台建议使用该方式,因为执行速度会更快,但是tflite并不是所有模型都支持,只支持部分模型。

转换形式使用bazel,bazel的具体安装和使用请参考我的另一篇博客:tensorflow深度学习实战笔记(四):bazel编译tensorflow工具的使用方法

bazel-bin/tensorflow/contrib/lite/toco/toco
–input_file=/home/yuping-chen/slim/my_model/frozen_model/frozen_inception_v3.pb
–input_format=TENSORFLOW_GRAPHDEF
–output_format=TFLITE
–output_file=/home/yuping-chen/slim/my_model/frozen_model/frozen_inception_v3.tflite
–inference_type=FLOAT
–input_type=FLOAT
–input_arrays=input
–output_arrays=Inception/Predictions/Reshape_1
–input_shapes=1,299,299,3
运行结束后即可在你指定的位置生成相应的tflite文件,后面就可以用生成的tflite文件移植到手机端了,tensorflow lite手机端的移植方法可以参考我的另一篇博客:tensorflow深度学习实战笔记(三):使用tensorflow lite把训练好的模型移植到手机端,编译成apk文件

作者:chenyuping666
来源:CSDN
原文:https://blog.csdn.net/chenyuping333/article/details/82106863
版权声明:本文为博主原创文章,转载请附上博文链接!

转:tensorflow深度学习实战笔记(二):把训练好的模型进行固化相关推荐

  1. Tensorflow深度学习实战之(七)--MP神经元与BP神经网络模型

    本文是在GPU版本的Tensorflow = 2.6.2 , 英伟达显卡驱动CUDA版本 =11.6,Python版本 = 3.6, 显卡为3060的环境下进行验证实验的!!! 文章目录 一.M-P神 ...

  2. 跨年之际,中文版畅销书《TensorFlow深度学习实战大全》分享,直接送!

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 跨年之际,给大家一份福利,赠书抽奖,一共4本!感兴趣的同学可以参与一下,奖品是新书&l ...

  3. Tensorflow深度学习之十二:基础图像处理之二

    Tensorflow深度学习之十二:基础图像处理之二 from:https://blog.csdn.net/davincil/article/details/76598474   首先放出原始图像: ...

  4. TensorFlow 深度学习实战指南中文版

    TensorFlow 深度学习实战指南中文版 第 1 章入门 安装 TensorFlow 简单的计算 逻辑回归模型构建 逻辑回归训练 第 2 章深度神经网络 基本神经网络 单隐藏层模型 单隐藏层的说明 ...

  5. Keras深度学习实战(1)——神经网络基础与模型训练过程详解

    Keras深度学习实战(1)--神经网络基础与模型训练过程详解 0. 前言 1. 神经网络基础 1.1 简单神经网络的架构 1.2 神经网络的训练 1.3 神经网络的应用 2. 从零开始构建前向传播 ...

  6. 深度学习实战笔记三:编码器、解码器+mnist+kears

    对matplotlib的解释 import matplotlib.pyplot as plt import numpy as np a = [[1,2]] a = np.array(a) c = a[ ...

  7. Tensorflow深度学习实战之(五)--保存与恢复模型

    文章目录 一.保存模型 二.恢复模型 三.使用模型预测 一.保存模型 在训练完Tensorflow模型为了方便对新的数据进行预测需要保存该模型,Tensorflow提供 tf.train.Saver( ...

  8. TensorFlow深度学习实战---循环神经网络

    循环神经网络(recurrent neural network,RNN)-------------------------重要结构(长短时记忆网络( long short-term memory,LS ...

  9. Pytorch深度学习实战笔记

最新文章

  1. 《head first java 》读书笔记
  2. Python-文件和数据格式化
  3. mysql 获取 row的id_转: MYSQL获取更新行的主键ID
  4. Hbase复制(Replication )
  5. mysql8.0mis安装教程
  6. Node.js 连接 MySQL 并进行数据库操作 –node.js 开发指南
  7. python中修改字符串的值
  8. MySQL 开启慢查询日志
  9. 标准机器学习数据集的最佳结果
  10. CentOS安装NVidia驱动提示kernel source path问题
  11. php fork demo,php多进程demo
  12. 代码雨代码源复制_两步教你打造一个代码雨动态壁纸效果,代码可以设置为名字...
  13. 【Visio】 Visio的安装
  14. 如何将php改成mp4,怎么在PHP中将视频转换成MP4
  15. 2008服务器打不开iso文件,Windows Server无法挂载ISO文件:以下是修复它的方法
  16. 廖雪峰——练习 请把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字。输入:['adam', 'LISA', 'barT'],输出:['Adam', 'Lisa', 'Bart']。
  17. 如何修改sql服务器名,修改计算机名并更新sqlserver中存储的服务器名称
  18. IDM+毒(du)盘 = 高速下载互联网中大部分资源
  19. linux 内核 修改mss,[转载]linux 内核对于TCPMSS的处理
  20. 记录我在华为的经历----阿冬专栏

热门文章

  1. 热塑性的精密塑胶模具在塑料注塑成型是通过将材料熔融
  2. 网络关键设备和网络安全专用产品目录-2023年7月
  3. 清华大学计算机系 贾珈老师,清华大学计算机科学与技术系60周年系庆代际创新论坛...
  4. 怎样将应用程序发布到Apple store上去 (一)
  5. 代码重构(二)25种代码优化示例
  6. 无法从带有索引像素格式的图像创建graphics对象 问题的解决方案。
  7. 2021.03.17模块
  8. 简述php静态变量,php静态变量小结
  9. 没穷过你可能不懂,为什么他们急着要返程上班
  10. 最小路径覆盖问题求解及与最小边覆盖的区别