如何查看ckpt的输入输出节点:

def getinout(input_checkpoint):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:file=open('./nodes.txt','a+')for n in tf.get_default_graph().as_graph_def().node:file.write(n.name + '\n')file.close()

n.name就是各个节点的名称,怎么找到呢?例子:
img_in---------------------》这个是输入节点
hh/conv1_1/conv2d/w/Initializer/truncated_normal/shape
hh/conv1_1/conv2d/w/Initializer/truncated_normal/mean
hh/res3_1/dw_bn/moving_mean/read
hh/fc4/w/Regularizer/l2_regularizer/L2Loss
hh/fc4/w/Regularizer/l2_regularizer
hh/fc4/fc4/Conv2D  ----------》这个就是输出节点
Reshape/shape  -----------》这个是神经网络输出后的操作步骤
Reshape
Reshape_1/shape
Reshape_1
Const
Mul
Mul_1
huber_loss/Sub

输入输出节点完全是跟你的网络定义顺序密切关联的,仔细核对就能找到。

将ckpt转换为pb:

def convt_ckpt_pb(checkpoint, metapath, output_graph):output_node_names = "one,two"# create a sessionsess = tf.Session()# import best modelsaver = tf.train.import_meta_graph(metapath + '.meta', clear_devices=True)saver.restore(sess, input_metapath) # variables# get graph definitiongd = sess.graph.as_graph_def()# generate protobufconverted_graph_def = graph_util.convert_variables_to_constants(sess, gd, output_node_names.split(","))tf.train.write_graph(converted_graph_def, input_checkpoint + '\\', 'frozen_model.pb', as_text=False)tf.train.write_graph(converted_graph_def, input_checkpoint + '\\', 'frozen_model.pbtxt', as_text=True)

查看 输入输出节点:

cd c:/tensorflow131/source/tensorflow

bazel build tools/graph_transforms:summarize_graph

build完之后:

cd C:/_bazel_****/olqihtlt/execroot/org_tensorflow/bazel-out/x64_windows-opt/bin/tensorflow/tools/graph_transforms

summarize_graph --in_graph=D:/project/convert_model/frozen_model.pb

将pb模型转换为uff问题处理:
raise UffException("Transpose permutation has op " + str(tf_permutation_node.op) + ", expected Const. Only constant permuations are supported in UFF.")
uff.model.exceptions.UffException: Transpose permutation has op ConcatV2, expected Const. Only constant permuations are supported in UFF.怎么解决呢?
我们打印模型的输出节点.(在转换uff的时候打印)

import graphsurgeon as gs
import tensorflow as tf
import uffif __name__ == "__main__":# USER DEFINED VALUESoutput_nodes = [“one","two"]input_node   = ["in","_in"]pb_file      = "./frozen_model.pb"uff_file     = "./frozen_model.uff"# END USER DEFINED VALUES# read tensorflow graph# NOTE: Make sure to freeze and optimize (remove training nodes, etc.)dynamic_graph = gs.DynamicGraph(pb_file)nodes=[n.name for n in dynamic_graph.as_graph_def().node]print(nodes)    # 在这一行打印ns={}for node in nodes:# replace LeakyRelu with default TRT plugin LReLU_TRTif "LeakyRelu" in node:ns[node]=gs.create_plugin_node(name=node,op="LReLU_TRT", negSlope=0.1)# replace Maximum with L2Norm_Helper_TRT max operation (CUDA's fmaxf)# if node == "orientation/l2_normalize/Maximum":if node == "embeddings/Maximum":ns[node]=gs.create_plugin_node(name=node,op="L2Norm_Helper_TRT",op_type=0,eps=1e-12)# replace Rsqrt with L2Norm_Helper_TRT max operation (CUDA's rsqrtf)if node == "embeddings/Rsqrt":ns[node]=gs.create_plugin_node(name=node,op="L2Norm_Helper_TRT",op_type=1)dynamic_graph.collapse_namespaces(ns)# write UFF to fileuff_model = uff.from_tensorflow(dynamic_graph.as_graph_def(), output_nodes=output_nodes,output_filename=uff_file, text=False)

发现tf.layers.dense中会用到Transpose。那为什么这里会用到呢?因为,在dense的输入中,其shape类似于(?,1,1,128)。这才是问题的核心。
为了使得tf.layers.dense不调用Transpose,我们就需要把shape搞成(?,128)就行了。所以对于,tf.layers.dense的输入,在前面需要做一下tf.reshape(input, (-1,128))处理。
重新训练得到模型,按照上面的方法,将ckpt转为pb,然后将pb转成uff就可以解决问题了。

关注他,获取更多干货

tensorflow模型ckpt如何查看输入输出节点,以及转uff模型相关推荐

  1. tensorflow1.X版本中打印训练好模型各个节点名,并保存在txt,根据输入输出节点保存‘.pb’文件

    tensorflow模型训练好后有几个文件,其中".ckpt"是模型参数数据,".meta"存有网络结构: 如何打印显示网络中各个节点的名称(op),代码如下: ...

  2. Tensorflow 模型文件结构、模型中Tensor查看

    转自:https://blog.csdn.net/dcrmg/article/details/79672874 参考:https://www.jb51.net/article/142183.htm t ...

  3. pytorch 获取模型参数_剑指TensorFlow,PyTorch Hub官方模型库一行代码复现主流模型...

    选自PyTorch 机器之心编译 参与:思源.一鸣 经典预训练模型.新型前沿研究模型是不是比较难调用?PyTorch 团队今天发布了模型调用神器 PyTorch Hub,只需一行代码,BERT.GPT ...

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

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

  5. tensorflow tf.train.ExponentialMovingAverage().variables_to_restore()函数 (用于加载模型时将影子变量直接映射到变量本身)

    variables_to_restore函数,是TensorFlow为滑动平均值提供.之前,也介绍过通过使用滑动平均值可以让神经网络模型更加的健壮.我们也知道,其实在TensorFlow中,变量的滑动 ...

  6. 人脸口罩检测现开源PyTorch、TensorFlow、MXNet等全部五大主流深度学习框架模型和代码...

    号外!号外! 现在,AIZOO开源PyTorch.TensorFlow.MXNet.Keras和Caffe五大主流深度学习框架的人脸检测模型和代码啦! 先附上Github链接为敬. https://g ...

  7. TensorFlow精进之路(一):Softmax回归模型训练MNIST

    1.MNIST数据集简介: MNIST数据集主要由一些手写数字的图片和相应标签组成,图片总共分为10类,分别对应0-9十个数字. 如上图所示,每张图片的大小为28×28像素.而标签则由one-hot向 ...

  8. Caffe、TensorFlow、MXnet三个开源库对比+主流分类模型对比

    库名称 开发语言 支持接口 安装难度(ubuntu) 文档风格 示例 支持模型 上手难易 Caffe c++/cuda c++/python/matlab *** * *** CNN ** MXNet ...

  9. Tensorflow移动端之如何将自己训练的MNIST模型加载到Android手机上

    本篇文章主要依托于官方demo,在官网demo上进行修改来体现如何在一个常规的app上加入深度学习的模型.因为对于在app中加入对应的模型也只是将app搜集的数据导入模型并进行处理,处理完之后将结果返 ...

最新文章

  1. oracle 提取当天日志,powershell提取日志内容
  2. 1.SQL数据定义语言(基础)
  3. DataTables选择多行
  4. cassandra本地连接失败_本地网络发现失败的解决方法连接到OS X中的服务器的问题 | MOS86...
  5. Spring Validation(使用Hibernate Validator)
  6. HarmonyOS之深入解析自定义组件与布局的实现
  7. matlab 定义一个有自变量的方程_Eviews、Stata、Python、Matlab、R描述+相关+回归分析教程汇总...
  8. 如何使用SwitchyOmega.crx谷歌插件
  9. vs C++实现Socket通信、添加ws2_32.lib 动态链接库
  10. Aitit aop之道 艾龙著 需要整合zop资料包东西 第1章 AOP的产生         1.1 软件开发方法的演进         1.2 AOP产生的前奏——把系统看做一批关注点
  11. ADNI数据库数据集下载权限申请
  12. 贪心科技机器学习训练营(二)
  13. 不到两年的前端小白2017个人年终总结:今年的年终总结是为了更好的自己
  14. Android Recovery OTA升级(二)—— Recovery源码解析
  15. Java、JSP 基于微信小程序 宠物在线医疗管理系统的设计与实现
  16. Redis技术架构演进
  17. 三菱系统四轴正反转参数_三菱第四轴参数
  18. NVIDIA NCCL优化——利用共享内存实现比NCCL更快的集合通信
  19. python的拼音_Python返回汉字的汉语拼音(原创) | 学步园
  20. 教你如何谈朋友噢!!!zz

热门文章

  1. AFNetworking 之加载网络图片
  2. 《Adobe Illustrator CS6中文版经典教程(彩色版)》—第0课0.15节使用“外观”面板与效果...
  3. 【SpringBoot】十四、常见注解(场景及源码)
  4. 300+值得收藏的设计师资源站
  5. 简单介绍长短期记忆网络 - LSTM
  6. 二总线-MBus讲解
  7. 3934:C 10 Aug 2022 00:14:04.239 # Fatal error, can‘t open config file ‘/usr/local/redis/./redis-conf
  8. ZuulException: Forwarding error java.net.UnknownHostException: DESKTOP-QBA1AHC:
  9. fiddler mac
  10. APP马甲包优化技巧制作流程(二)