window 下 Android studio 上运行tensorflow
1、在build.gradle
//加入这一行代码就可以,编译之后我们的Android项目就可以使用tensorflow接口
//不需要Bazle之类的工具,进行一系列的操作
compile 'org.tensorflow:tensorflow-android:+'
2、首先写一个简单的python代码
"""
开发时间:2018.6.17
模型作用:简单的矩阵想加
目的:测试Android中tensorflow是否可用
"""
import tensorflow as tf
# 1.注意这里面的 name 很重要,我们给这个tensorflow模型喂值就靠 name !!!
first = tf.constant([1,2],dtype=tf.float32,name="input")
# 就是测试简单的矩阵想加
result = tf.add(first,first,name="output")
# 2.开启一个Session
sess = tf.Session()
sess.run(tf.initialize_all_variables())
# 3.这几行代码就是把当前的模型保存为PB文件,PB文件会保存当前tensorflow的模型,将其他值固化为常量
# 第一个参数 sess指定为当前的Session,第二个参数是要保存的 图的定义,默认是当前图,然后是要输出的节点
output_graph_def = tf.graph_util.convert_variables_to_constants(sess, sess.graph_def,
output_node_names=['output'])
# 这里是选择要保存的位置
with tf.gfile.FastGFile('F:/android_tensorflow.pb', mode='wb') as f:
f.write(output_graph_def.SerializeToString())
# 运行以上代码就会在 你选择的对应的目录找打PB文件
3、将生成的PB文件放在Androidstudio相应目录下
4、在Android中调用feed 并且运行
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//保存要输入和输出的结果
float[] inputs = new float[]{7,8}; //随机给定值看是否达到想加的效果
float[] outputs = new float[2];
// 这里是那个PB文件的绝对路径
String filename = "android_tensorflow.pb";
// 以那个PB文件创建一个tensorflow的接口
TensorFlowInferenceInterface tensorFlowInferenceInterface =
new TensorFlowInferenceInterface(getAssets(),filename);
//1.feed 参数, 第一个参数是 张量的名称 ,第二个是一个一维数组存放数据, 最后指定矩阵的维度,我这里是1行2列
tensorFlowInferenceInterface.feed("input",inputs,1,2);
//2.运行要输出的张量
tensorFlowInferenceInterface.run(new String[]{"output"});
//3.然后将结果获取到,保存在数组中,方便我们获取
tensorFlowInferenceInterface.fetch("output",outputs);
//然后你可以控制台打印出来,或者用textView等在Android界面显示出来,看有没有达到我们的效果,有没有显示两个矩阵的想加
Toast.makeText(this, String.valueOf(outputs[0])+":"+String.valueOf(outputs[1]),
Toast.LENGTH_LONG).show();
}
当我们把这个app下载到手机上就可以看到结果14.0 : 16.0
我们的Android项目中已经可以成功使用tensorflow的接口运行tensorflow模型
本文转载自:window 下 Android studio 上运行tensorflow - private_void_main的博客 - ****博客 https://blog.****.net/private_void_main/article/details/80717565