前言
本文中出现的TF皆为TensorFlow的简称。
先说两句题外话吧,TensorFlow 前两天热热闹闹的发布了正式版r1.0,可感觉自己才刚刚上手 r0.12,这个时代发展的太快,脚步是一刻也不能停啊~
但是不得不吐槽 TensorFlow的向下兼容做的实在不太友好,每次更新完版本,以前的代码就跑不动,各种提示您使用的函数已经不存在。。。
代码积攒的越来越多,全部针对新版本翻改一遍,工程真是浩大。但是喜新厌旧,手贱如我,每次都忍不住点了更新。不过这次忍的还算不错,到目前还没更新,继续忍住
在之前的文章中,我介绍了如何实现 TensorFlow官网的Mobile教程:
【将Tensorflow移植到安卓手机,实现物体识别、行人检测和图像风格迁移】。
但在那个教程中,TensorFlow提供了完整的、已经构建好的Android项目,我们需要做的总结下来只有3步:1、搭建环境;2、编译;3、安装到手机
这当然还不够,我们的最终目的当然是要为我所用,所以怎样才能移植自己训练好的TF模型到安卓手机呢?换句话说,怎样将训练好的模型放入Android项目中并进行成功编译?又或者怎样创建自己的Android Tensorflow项目?
PS:
之前没有安卓开发的经验,纯粹是为了实现将TF模型移植到手机才开始上手,目前属于入门级小白,如有错误之处,欢迎批评指正!
手机调用TF模型的过程简介:
1、 保存训练完毕的TF模型
2、 在Android项目中导入TF模型、导入Android平台调用TF模型需要的jar包和so文件 (它们负责TF模型的解析和运算)
3、定义变量、存储数据,通过jar包提供的接口进行模型的调用
环境
TensorFlow版本: r0.12
python 版本:2.7
Python IDE: Spyder
Android IDE : Android Studio
移植过程
我们以mnist数据集上自己训练的一个图像识别模型为例,进行讲解
一、 在使用python代码编写的TF模型定义中为模型的输入层和输出层Tensor Variable分别指定名字(通过形参 ‘name’)
X = tf.placeholder(tf.float32, shape = […], name=‘input’) //网络的输入
Y = tf.nn.softmax(tf.matmul(f, out_