赞
踩
版权声明:本文为博主原创文章,欢迎转载,转载请注明原文地址、作者信息。
tensorflow项目构建流程
博客:http://blog.csdn.net/hjimce
微博:黄锦池-hjimce qq:1393852684
一、构建路线
个人感觉对于任何一个深度学习库,如mxnet、tensorflow、theano、caffe等,基本上我都采用同样的一个学习流程,大体流程如下:
(1)训练阶段:数据打包-》网络构建、训练-》模型保存-》可视化查看损失函数、验证精度
(2)测试阶段:模型加载-》测试图片读取-》预测显示结果
(3)移植阶段:量化、压缩加速-》微调-》C++移植打包-》上线
这边我就以tensorflow为例子,讲解整个流程的大体架构,完成一个深度学习项目所需要熟悉的过程代码。
二、训练、测试阶段
1、tensorflow打包数据
这一步对于tensorflow来说,也可以直接自己在线读取:.jpg图片、标签文件等,然后通过phaceholder变量,把数据送入网络中,进行计算。
不过这种效率比较低,对于大规模训练数据来说,我们需要一个比较高效的方式,tensorflow建议我们采用tfrecoder进行高效数据读取。学习tensorflow一定要学会tfrecoder文件写入、读取,具体示例代码如下:
2、网络架构与训练
经过上面的数据格式处理,接着我们只要写一写网络结构、网络优化方法,把数据搞进网络中就可以了,具体示例代码如下:
3、可视化显示
(1)首先再源码中加入需要跟踪的变量:
(4)然后再session执行的时候,保存:
然后打开浏览器网址:
即可观训练曲线。
4、测试阶段
测试阶段主要是直接通过加载图模型、读取参数等,然后直接通过tensorflow的相关函数,进行调用,而不需要网络架构相关的代码;通过内存feed_dict的方式,对相关的输入节点赋予相关的数据,进行前向传导,并获取相关的节点数值。
4、移植阶段
(1)一个算法经过实验阶段后,接着就要进入移植商用,因此接着需要采用tensorflow的c api函数,直接进行预测推理,首先我们先把tensorflow编译成链接库,然后编写cmake,调用tensorflow链接库:
在bazel-bin/tensorflow目录下会生成libtensorflow.so文件
5、C++ API调用、cmake 编写:
三、熟悉常用API
1、LSTM使用
1、one-hot函数:
2、assign_sub
也就是说assign函数返回结果值的同时,变量本身的值也会被改变
3、变量查看
4、slice函数:
5、正太分布随机初始化
6、打印操作运算在硬件设备信息
8、allow_soft_placement的使用:allow_soft_placement=True,允许当在代码中指定tf.device设备,如果设备找不到,那么就采用默认的设备。如果该参数设置为false,当设备找不到的时候,会直接编译不通过。
9、batch normalize调用:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。