import tensorflow as tf
#from create_tf_record import *
from tensorflow.python.framework import graph_util
def freeze_graph(input_checkpoint,output_graph):
  '''
  :param input_checkpoint:
  :param output_graph: PB模型保存路径
  :return:
  '''
  # checkpoint = tf.train.get_checkpoint_state(model_folder) #检查目录下ckpt文件状态是否可用
  # input_checkpoint = checkpoint.model_checkpoint_path #得ckpt文件路径
   
  # 指定输出的节点名称,该节点名称必须是原模型中存在的节点
  #output_node_names = "InceptionV1/Logits/Predictions/Reshape_1"
  #output_node_names = "resnet_v1_101/rpn_conv/3x3/weights/Momentum"
  output_node_names = "resnet_v1_101/bbox_pred/weights"
  #trainable_scopes = 'InceptionResnetV2/Logits,InceptionResnetV2/AuxLogits'

  

  saver = tf.train.import_meta_graph(input_checkpoint + '.meta', clear_devices=True)
  graph = tf.get_default_graph() # 获得默认的图
  input_graph_def = graph.as_graph_def() # 返回一个序列化的图代表当前的图
 
  with tf.Session() as sess:
    saver.restore(sess, input_checkpoint) #恢复图并得到数据
    output_graph_def = graph_util.convert_variables_to_constants( # 模型持久化,将变量值固定
      sess=sess,
      input_graph_def=input_graph_def,# 等于:sess.graph_def
      output_node_names=output_node_names.split(","))# 如果有多个输出节点,以逗号隔开
 
    with tf.gfile.GFile(output_graph, "wb") as f: #保存模型
      f.write(output_graph_def.SerializeToString()) #序列化输出
    print("%d ops in the final graph." % len(output_graph_def.node)) #得到当前图有几个操作节点
 

#input_checkpoint='inceptionv1/model.ckpt-0'
input_checkpoint = "output/res101/voc_2007_trainval+voc_2012_trainval/default/res101_faster_rcnn_iter_110000.ckpt"
#out_pb_path='inceptionv1/frozen_model.pb'
out_pb_path = "output/pb_model/frozen_model_110000_Variable.pb"
freeze_graph(input_checkpoint, out_pb_path)

ckpt convert to pb的更多相关文章

  1. .ckpt文件与.pb文件

    .ckpt文件是旧版本的输出saver.save(sess),相当于现在的.ckpt-data checkpoint文件仅用于告知某些TF函数,这是最新的检查点文件. .ckpt-meta 包含元图, ...

  2. tensorflow学习笔记——模型持久化的原理,将CKPT转为pb文件,使用pb模型预测

    由题目就可以看出,本节内容分为三部分,第一部分就是如何将训练好的模型持久化,并学习模型持久化的原理,第二部分就是如何将CKPT转化为pb文件,第三部分就是如何使用pb模型进行预测. 一,模型持久化 为 ...

  3. TensorFlow 自定义模型导出:将 .ckpt 格式转化为 .pb 格式

    本文承接上文 TensorFlow-slim 训练 CNN 分类模型(续),阐述通过 tf.contrib.slim 的函数 slim.learning.train 训练的模型,怎么通过人为的加入数据 ...

  4. tensorflow实战笔记(19)----使用freeze_graph.py将ckpt转为pb文件

    一.作用: https://blog.csdn.net/yjl9122/article/details/78341689 这节是关于tensorflow的Freezing,字面意思是冷冻,可理解为整合 ...

  5. tensorflow模型的保存与恢复,以及ckpt到pb的转化

    转自 https://www.cnblogs.com/zerotoinfinity/p/10242849.html 一.模型的保存 使用tensorflow训练模型的过程中,需要适时对模型进行保存,以 ...

  6. tensorflow 三种模型:ckpt、pb、pb-savemodel

    1.CKPT 目录结构 checkpoint: model.ckpt-1000.index model.ckpt-1000.data-00000-of-00001 model.ckpt-1000.me ...

  7. TensorFlow的checkpoint文件转换为pb文件

    由于项目需要,需要将TensorFlow保存的模型从ckpt文件转换为pb文件. import os from tensorflow.python import pywrap_tensorflow f ...

  8. 使用C++部署Keras或TensorFlow模型

    本文介绍如何在C++环境中部署Keras或TensorFlow模型. 一.对于Keras, 第一步,使用Keras搭建.训练.保存模型. model.save('./your_keras_model. ...

  9. 深度学习笔记(十三)YOLO V3 (Tensorflow)

    [代码剖析]   推荐阅读! SSD 学习笔记 之前看了一遍 YOLO V3 的论文,写的挺有意思的,尴尬的是,我这鱼的记忆,看完就忘了  于是只能借助于代码,再看一遍细节了. 源码目录总览 tens ...

随机推荐

  1. 微软Surface低端版本将问世

    平板电脑现如今已走进千家万户,其触屏的操作相比笔记本电脑更加方便,屏幕也比手机大很多,是家用玩机的首选.虽然微软也在这一领域有所发力,推出了Surface这一产品,但其高昂的售价使得其在市场上的表现并 ...

  2. Endless looping of packets in TCP/IP networks (Routing Loops)

    How endless looping of packets in a TCP/IP network might occur? Router is a device used to interconn ...

  3. C 预编译 宏 声明

  4. 标准库类型之map

    使用map得包含map类所在的头文件#include <map> 定义一个map对象:map<string, int> mapTest;//用string作为索引,存储int对 ...

  5. Python多线程应用于自动化测试

    Python多线程应用于自动化测试 将多线程在测试巧妙地应用,确实会带来很多好处,并且这是充分利用机器资源执行高效率测试很好的方式 # -*- coding: utf-8 -*- import thr ...

  6. 机器学习中的数学-强大的矩阵奇异值分解(SVD)及其应用

    版权声明: 本文由LeftNotEasy发布于http://leftnoteasy.cnblogs.com, 本文可以被全部的转载或者部分使用,但请注明出处,如果有问题,请联系wheeleast@gm ...

  7. Procomm Plus 与ASPECT脚本语言在基于远程终端设备上的测试应用

    产测 ---------------------------------------------------- 原文:http://www.bixuanzl.com/20180801/1084478. ...

  8. .net 后台页面统一验证是否登录

    首先新写一个PageBase类 using System; using System.Collections.Generic; using System.Web; namespace Departme ...

  9. 模块讲解---time模块,datetime模块,random模块,hashlib模块和hmac模块,typing模块,requests模块,re模块

    目录 1. 包 2. time模块   1. 优先掌握 2. 了解 3. datetime模块   1. 优先掌握 4. random模块   1. 优先掌握   2. 了解 5. hashlib模块 ...

  10. IIS上传限制大小

    加入下面的配置即可 <?xml version="1.0" encoding="UTF-8"?> <configuration> < ...