转换模型首先要知道的是从哪个节点输出,如果没有源代码是很难清楚节点信息。

获取ckpt模型的节点名称

import os
from tensorflow.python import pywrap_tensorflowcheckpoint_path = os.path.join('./ade20k', "model.ckpt-27150")
reader = pywrap_tensorflow.NewCheckpointReader(checkpoint_path)
var_to_shape_map = reader.get_variable_to_shape_map()
for key in var_to_shape_map:print("tensor_name: ", key)# print(reader.get_tensor(key)) #相应的值

获取pb模型的节点名称

import tensorflow as tf
import osmodel_dir = './'
model_name = 'model.pb'def create_graph():with tf.gfile.FastGFile(os.path.join(model_dir, model_name), 'rb') as f:graph_def = tf.GraphDef()graph_def.ParseFromString(f.read())tf.import_graph_def(graph_def, name='')create_graph()
tensor_name_list = [tensor.name for tensor in tf.get_default_graph().as_graph_def().node]
for tensor_name in tensor_name_list:print(tensor_name,'\n')

ckpt转换为pb模型

from tensorflow.python.tools import inspect_checkpoint as chkp
import tensorflow as tfsaver = tf.train.import_meta_graph("./ade20k/model.ckpt-27150.meta", clear_devices=True)#【敲黑板!】这里就是填写输出节点名称惹
output_nodes = ["xxx"] with tf.Session(graph=tf.get_default_graph()) as sess:input_graph_def = sess.graph.as_graph_def()saver.restore(sess, "./ade20k/model.ckpt-27150")output_graph_def = tf.graph_util.convert_variables_to_constants(sess,input_graph_def,output_nodes)with open("frozen_model.pb", "wb") as f:f.write(output_graph_def.SerializeToString())

[new version] ckpt to pb

import tensorflow as tf
from tensorflow.python.framework import graph_utilcheckpoint = "model.ckpt-xxx"
graph_file = "xxx.pb"def return_ops(candidate):ops = []if isinstance(candidate, (list, tuple)):for x in candidate:ops += return_ops(x)else:ops.append(candidate.op)return opsdef dump_graph():with tf.Graph().as_default():inputs = setup_input(dtype=tf.float32,shape=[None, 224, 224, 3],name='graph_input')outputs = model_inference(inputs, 1000)model_info = gen_info(inputs, outputs)print(model_info)saver = tf.train.Saver(tf.global_variables())dest_node = return_ops(outputs)with tf.Session() as sess:saver.restore(sess, checkpoint)cur_graphdef = sess.graph.as_graph_def()output_graphdef = graph_util.convert_variables_to_constants(sess, cur_graphdef, [n.name for n in dest_node])with tf.gfile.GFile(graph_file, 'wb') as gf:gf.write(output_graphdef.SerializeToString())with open(graph_file + '.info', 'w') as info_f:info_f.write(model_info)def setup_input(dtype, shape, name=None):p_node = tf.Placeholder(dtype=dtype, shape=shape, name=name)return p_nodedef gen_info(inp, o):info_text = '[input tensor]: {0}\n[input shape]: {1}\n'.format(inp.name, inp.get_shape())print("outp", o)info_text += '[output tensor]: {0}\n[output shape]: {1}\n'.format(o.name, o.get_shape())return info_textdef model_inference(images, num_classes):with tf.variable_scope('xxx'):logits = tf.xxxreturn logitsif __name__ == "__main__":dump_graph()print('dump finish!')

tensorflow框架.ckpt .pb模型节点tensor_name打印及ckpt模型转.pb模型相关推荐

  1. TF之TFOD-API:基于tensorflow框架利用TFOD-API脚本文件将YoloV3训练好的.ckpt模型文件转换为推理时采用的.pb文件

    TF之TFOD-API:基于tensorflow框架利用TFOD-API脚本文件将YoloV3训练好的.ckpt模型文件转换为推理时采用的frozen_inference_graph.pb文件 目录 ...

  2. tensorflow框架到caffe框架的模型转换

    本文参考以下系列内容: tensorflow2caffe(1) : caffemodel解析,caffemodel里面到底记录了什么? tensorflow2caffe(2) : 如何在tensorf ...

  3. 断点续训 Pytorch 和 Tensorflow 框架 VGG16 模型 猫狗大战 鸢尾花分类

    神经网络训练模型的过程中,如果程序突然中断,竹篮打水一场空? >>>断点续训来解决! 目录 (1)Pytorch框架的断点续训(猫狗大战) (2)Tensorflow框架的断点续训( ...

  4. python模型训练框架_使用TensorFlow框架基于SSD算法训练模型

    内容引用其它文章:https://my.oschina.net/u/876354/blog/1927351 目标检测是AI的一项重要应用,通过目标检测模型能在图像中把人.动物.汽车.飞机等目标物体检测 ...

  5. 基于tensorflow框架训练超像素subpixel模型

    Subpixel算法自身是一种插值算法,与常规的双线性或cubic插值算法相比,提升了图像的分辨率和插值质量(SNR),但达不到人脸解析的效果.为了达成该效果,可选取人脸数据集(如celebA),训练 ...

  6. Python黑马头条推荐系统第四天 TensorFlow框架介绍和深度学习

    深度学习与推荐系统 6.1 推荐系统与深度学习关联 学习目标 目标 无 应用 无 6.1.1 深度学习到推荐系统 深度学习发展成功与局限 最近几年深度学习的流行,大家一般认为是从2012年 AlexN ...

  7. 深度学习利器:TensorFlow在智能终端中的应用——智能边缘计算,云端生成模型给移动端下载,然后用该模型进行预测...

    前言 深度学习在图像处理.语音识别.自然语言处理领域的应用取得了巨大成功,但是它通常在功能强大的服务器端进行运算.如果智能手机通过网络远程连接服务器,也可以利用深度学习技术,但这样可能会很慢,而且只有 ...

  8. 【TensorFlow篇】--Tensorflow框架实现SoftMax模型识别手写数字集

    一.前述 本文讲述用Tensorflow框架实现SoftMax模型识别手写数字集,来实现多分类. 同时对模型的保存和恢复做下示例. 二.具体原理 代码一:实现代码 #!/usr/bin/python ...

  9. Tensorflow框架是如何支持分布式训练的?

    参加 2019 Python开发者日,请扫码咨询 ↑↑↑ 作者 | 杨旭东 转载自知乎<算法工程师的自我修养>专栏 Methods that scale with computation ...

最新文章

  1. 开发利器_Pigar.快速为Python项目生成依赖文件requirements.txt?
  2. python 多线程讲解(如何实现多线程,递归锁,互斥锁,信号量,事件等)
  3. [IOS] Storyboard全解析-第一部分
  4. java单元测试算初级_Java____Eclipse下JUnit单元测试(初级)
  5. kafka Failed to send messages after 3 tries 问题解决
  6. eNet 软件发布要求多多
  7. KVM虚拟机在Ubuntu16.04下的环境搭建
  8. uview组件得到回调的参数
  9. 【数据结构笔记】Leetcode:718. 最长重复子数组(动态规划)
  10. 针对数据泵导出 (expdp) 和导入 (impdp)工具性能降低问题的检查表 (文档 ID 1549185.1)...
  11. c语言词法分析程序实验报告,词法分析器实验报告
  12. epoch训练时间不同_给训练踩踩油门——Pytorch加速数据读取
  13. html代码表格服装尺寸,HTML - 表格单元尺寸
  14. Android开发实例详解之IMF(Android SDK Sample—SoftKeyboard)
  15. 大物计算机在线使用,计算机怎么发展为电脑的
  16. spring-boot-starter-parent作用及测试
  17. FFmpeg视频解码中的YUV420P格式
  18. 彩色日志,教你配置颜色分明的日志输出。
  19. 【Pygame】细致讲解开发Flappy Bird小游戏
  20. 计算机毕设太简单会不会过不了 SSM公司设备管理系统 企业员工工资管理系统 公司员工工资管理系统Java

热门文章

  1. 外贸Soho创业之前期要做哪些准备,要不要全职开始创业
  2. 【Y忍冬草】Qt中添加第三方插件VTK,Designer中有但Creator中没有
  3. 高段位隐藏IP、提高溯源难度的几种实用方案!
  4. 现金贷、信用贷、消费贷小贷系统后台、消费贷、助学贷、旅游贷、装修贷、准入授信 、贷款申请、产品授信、合同管理、放款审批、放款登记、还款管理、贷后检查、贷后预警、贷款结项、催收、逾期、还款、放款台账
  5. php macaw路由没进入路由5入口,构建路由 · composer-PHP框架 · 看云
  6. ZBrush个性化角色人物建模教程
  7. Windows7 简体中文旗舰版下载 (MSDN官方发布正式版原版镜像)!
  8. MATLAB:添加图标题、轴标签、图例、更改字体大小
  9. 自动化测试常见面试题整理
  10. 计算机存储单位 t后面的单位,数据存储计量单位除了B、K、M、G、T,还有什么?怎么换算?...