参考:

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

TensorFlow 模型保存与恢复

snpe

tensorflow 模型前向传播 保存ckpt  tensorbard查看 ckpt转pb  pb 转snpe dlc 实例

log文件

输入节点 图像高度 图像宽度 图像通道数

input0 6,6,3

输出节点

--out_node add

snpe-tensorflow-to-dlc --graph ./simple_snpe_log/model200.pb -i input0 6,6,3 --out_node add

#coding:utf-8
#http://blog.csdn.net/zhuiqiuk/article/details/53376283
#http://blog.csdn.net/gan_player/article/details/77586489
from __future__ import absolute_import, unicode_literals
import tensorflow as tf
import shutil
import os.path
from tensorflow.python.framework import graph_util
import mxnet as mx
import numpy as np
import random
import cv2
from time import sleep
from easydict import EasyDict as edict
import logging
import math
import tensorflow as tf
import numpy as np def FullyConnected(input, fc_weight, fc_bias, name):
fc = tf.matmul(input, fc_weight) + fc_bias
return fc def inference(body, name_class,outchannel):
wkernel = 3
inchannel = body.get_shape()[3].value
conv_weight = np.arange(wkernel * wkernel * inchannel * outchannel,dtype=np.float32).reshape((outchannel,inchannel,wkernel,wkernel))
conv_weight = conv_weight / (outchannel*inchannel*wkernel*wkernel)
print("conv_weight ", conv_weight)
conv_weight = conv_weight.transpose(2,3,1,0)
conv_weight = tf.Variable(conv_weight, dtype=np.float32, name = "conv_weight")
body = tf.nn.conv2d(body, conv_weight, strides=[1, 1, 1, 1], padding='SAME', name = "conv0")
conv = body
conv_shape = body.get_shape()
dim = conv_shape[1].value * conv_shape[2].value * conv_shape[3].value
body = tf.reshape(body, [1, dim], name = "fc0")
fc_weight = np.ones((dim, name_class))
fc_bias = np.zeros((1, name_class))
fc_weight = tf.Variable(fc_weight, dtype=np.float32, name="fc_weight")
fc_bias = tf.Variable(fc_bias, dtype=np.float32, name="fc_bias")
# tf.constant(100,dtype=np.float32, shape=(body.get_shape()[1] * body.get_shape()[2] * body.get_shape()[3], name_class])
# fc_bias = tf.constant(10, dtype=np.float32, shape=(1, name_class])
body = FullyConnected(body, fc_weight, fc_bias, "fc0")
return conv, body export_dir = "simple_snpe_log"
def saveckpt():
height = 6
width = 6
inchannel = 3
outchannel = 3
graph = tf.get_default_graph()
with tf.Graph().as_default():
input_image = tf.placeholder("float", [1, height, width, inchannel], name = "input0")
conv, logdit = inference(input_image,10,outchannel)
init = tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init)
img = np.arange(height * width * inchannel, dtype=np.float32).reshape((1,inchannel,height,width)) \
/ (1 * inchannel * height * width) * 255.0 - 127.5
print("img",img)
img = img.transpose(0,2,3,1)
import time
since = time.time()
fc = sess.run(logdit,{input_image:img})
conv = sess.run(conv, {input_image: img})
time_elapsed = time.time() - since
print("tf inference time ", str(time_elapsed))
print("conv", conv.transpose(0, 2, 3, 1))
print("fc", fc)
#np.savetxt("tfconv.txt",fc)
#print( "fc", fc.transpose(0,3,2,1))
#np.savetxt("tfrelu.txt",fc.transpose(0,3,2,1)[0][0]) # #save ckpt
export_dir = "simple_snpe_log"
saver = tf.train.Saver()
step = 200
# if os.path.exists(export_dir):
# os.system("rm -rf " + export_dir)
if not os.path.isdir(export_dir): # Create the log directory if it doesn't exist
os.makedirs(export_dir) checkpoint_file = os.path.join(export_dir, 'model.ckpt')
saver.save(sess, checkpoint_file, global_step=step) def LoadModelToTensorBoard():
graph = tf.get_default_graph()
checkpoint_file = os.path.join(export_dir, 'model.ckpt-200.meta')
saver = tf.train.import_meta_graph(checkpoint_file)
print(saver)
summary_write = tf.summary.FileWriter(export_dir , graph)
print(summary_write) def ckptToPb():
checkpoint_file = os.path.join(export_dir, 'model.ckpt-200.meta')
ckpt = tf.train.get_checkpoint_state(export_dir)
print("model ", ckpt.model_checkpoint_path)
saver = tf.train.import_meta_graph(ckpt.model_checkpoint_path +'.meta')
graph = tf.get_default_graph()
with tf.Session() as sess:
saver.restore(sess,ckpt.model_checkpoint_path)
height = 6
width = 6
input_image = tf.get_default_graph().get_tensor_by_name("input0:0")
fc0_output = tf.get_default_graph().get_tensor_by_name("add:0")
sess.run(tf.global_variables_initializer())
output_graph_def = tf.graph_util.convert_variables_to_constants(
sess, graph.as_graph_def(), ['add'])
model_name = os.path.join(export_dir, 'model200.pb')
with tf.gfile.GFile(model_name, "wb") as f:
f.write(output_graph_def.SerializeToString()) def PbTest():
with tf.Graph().as_default():
output_graph_def = tf.GraphDef()
output_graph_path = os.path.join(export_dir,'model200.pb')
with open(output_graph_path, "rb") as f:
output_graph_def.ParseFromString(f.read())
tf.import_graph_def(output_graph_def, name="") with tf.Session() as sess:
tf.initialize_all_variables().run()
height = 6
width = 6
inchannel = 3
outchannel = 3
input_image = tf.get_default_graph().get_tensor_by_name("input0:0")
fc0_output = tf.get_default_graph().get_tensor_by_name("add:0")
conv = tf.get_default_graph().get_tensor_by_name("conv0:0") img = np.arange(height * width * inchannel, dtype=np.float32).reshape((1,inchannel,height,width)) \
/ (1 * inchannel * height * width) * 255.0 - 127.5
print("img",img)
img = img.transpose(0,2,3,1)
import time
since = time.time()
fc0_output = sess.run(fc0_output,{input_image:img})
conv = sess.run(conv, {input_image: img})
time_elapsed = time.time() - since
print("tf inference time ", str(time_elapsed))
print("conv", conv.transpose(0, 2, 3, 1))
print("fc0_output", fc0_output) if __name__ == '__main__': saveckpt() #1
LoadModelToTensorBoard()#2
ckptToPb()#3
PbTest()#

tensorflow 模型前向传播 保存ckpt tensorbard查看 ckpt转pb pb 转snpe dlc 实例的更多相关文章

  1. Tensorflow模型加载与保存、Tensorboard简单使用

    先上代码: from __future__ import absolute_import from __future__ import division from __future__ import ...

  2. TensorFlow模型加载与保存

    我们经常遇到训练时间很长,使用起来就是Weight和Bias.那么如何将训练和测试分开操作呢? TF给出了模型的加载与保存操作,看了网上都是很简单的使用了一下,这里给出一个神经网络的小程序去测试. 本 ...

  3. 利用tensorflow实现前向传播

    import tensorflow as tf w1 = tf.Variable(tf.random_normal((2, 3), stddev=1, seed=1))w2 = tf.Variable ...

  4. Tensorflow笔记——神经网络图像识别(一)前反向传播,神经网络八股

      第一讲:人工智能概述       第三讲:Tensorflow框架         前向传播: 反向传播: 总的代码: #coding:utf-8 #1.导入模块,生成模拟数据集 import t ...

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

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

  6. tensorflow模型持久化保存和加载

    模型文件的保存 tensorflow将模型保持到本地会生成4个文件: meta文件:保存了网络的图结构,包含变量.op.集合等信息 ckpt文件: 二进制文件,保存了网络中所有权重.偏置等变量数值,分 ...

  7. Tensorflow模型变量保存

    Tensorflow:模型变量保存 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献Tensorflow实战Google深度学习框架 实验平台: Tensorflow1.4.0 pyt ...

  8. tensorflow模型持久化保存和加载--深度学习-神经网络

    模型文件的保存 tensorflow将模型保持到本地会生成4个文件: meta文件:保存了网络的图结构,包含变量.op.集合等信息 ckpt文件: 二进制文件,保存了网络中所有权重.偏置等变量数值,分 ...

  9. 超详细的Tensorflow模型的保存和加载(理论与实战详解)

    1.Tensorflow的模型到底是什么样的? Tensorflow模型主要包含网络的设计(图)和训练好的各参数的值等.所以,Tensorflow模型有两个主要的文件: a) Meta graph: ...

随机推荐

  1. 【Unity】10.3 创建类人动画角色

    分类:Unity.C#.VS2015 创建日期:2016-05-02 一.简介 Mecanim 动画系统 (Mecanim Animation System) 特别适合使用类人骨架动画.由于类人骨架非 ...

  2. Android 编程下将 Bitmap 转为 InputStream

    某些情况下会用到这种非主流的转换方式,最近项目中用到,记录下. ByteArrayOutputStream baos = new ByteArrayOutputStream(); bm.compres ...

  3. Android 拍照

    android调用camera时,可以自己写一个activity,赋上相关参数,打开前camera就可以了: 需要申请的permission,在AndroidManifest.xml中添加: < ...

  4. 数据库记录锁表锁实际研究笔记 --- MSSQLSERVER

    直切主题 现有一张表 table : ChenJi ID, DanWeiID,  Name,  ChenJi 表中记录 ID  DanWeiID    Name      ChenJi --- --- ...

  5. js的深入学习课程Object.prototype.toString.call()

    1.通过 Object.prototype.toString.call() 进行类型判断 function isArray(obj) { return Object.prototype.toStrin ...

  6. js jquery 函数回调

    JS 函数回调 $('#btn_update').click(function () { var table_id = $table.bootstrapTable('getSelections')[0 ...

  7. iOS开发:代码通用性以及其规范 第一篇(附带,自定义UITextView\进度条\双表显示\瀑布流 代码设计思路)

    在iOS团队开发中,我见过一些人的代码,也修改过他们的代码.有的人的代码写的非常之规范.通用,几乎不用交流,就可以知道如何修改以及在它基础上扩展延生.有的人的代码写的很垃圾,一眼看过去,简直会怀疑自己 ...

  8. 关于正则表达式的“\b”

    今天刚刚开始看正则表达式就遇到一个十分头疼的问题,原文是这样的: “不幸的是,很多单词里包含hi这两个连续的字符,比如him,history,high等等.用hi来查找的话,这里边的hi也会被找出来. ...

  9. DeepNLP的核心关键/NLP词的表示方法类型/NLP语言模型 /词的分布式表示/word embedding/word2vec

    DeepNLP的核心关键/NLP语言模型 /word embedding/word2vec Indexing: 〇.序 一.DeepNLP的核心关键:语言表示(Representation) 二.NL ...

  10. 01_MUI之Boilerplate中:HTML5演示样例,动态组件,自己定义字体演示样例,自己定义字体演示样例,图标字体演示样例

     1安装HBuilder5.0.0,安装后的界面截图例如以下: 2 依照https://www.muicss.com/docs/v1/css-js/boilerplate-html中的说明,创建上 ...