tensorflow 移植自己的模型到android

本文详细介绍了如何将训练好的TensorFlow神经网络模型移植到Android应用中。首先,介绍了在训练模型时需要注意的节点命名,并提供了两种保存图结构的方法。接着,针对Android Studio 3.01,阐述了配置项目的步骤,包括API版本要求、导入预编译库和模型文件,以及修改build.gradle文件。最后,展示了如何在Android代码中加载模型、设置输入输出并进行预测,以实现模型在移动端的运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一 训练神经网络

注意在神经网络中输入x为“x-input”,输出layer2为“0”,在之后保存图结构的时候需要用到这两个名字

x = tf.placeholder(tf.float32, [None, INPUT_NODE], name='x-input')

layer2 = tf.add(tf.matmul(layer1, w2), b2, name="O")


保存图结构的两种方法

1.以变量的形式保存图,这里的output_node_names的名字是之前layer2的名字

output_graph_def = tf.graph_util.convert_variables_to_constants(sess, sess.graph_def, output_node_names=['O'])
    with tf.gfile.FastGFile("MNIST_data/model-graph2.pb", "wb") as f:
        f.write(output_graph_def.SerializeToString())

2.以常量的形式保存图,这里需要用到冻结图



以MNIST手写字体识别为例,代码如下

import numpy as np
import sklearn.preprocessing as prep
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data

mnist = input_data.read_data_sets('MNIST_data', one_hot=True)

n_samples = int(mnist.train.num_examples)
training_epochs = 10000
batch_size = 100
REGULARIZATION_RATE = 0.0001
MOVING_AVERAGE_DECAY = 0.99

INPUT_NODE = 784
OUTPUT_NODE = 10
hidden_1 = 500
hidden_2 = 10

x = tf.placeholder(tf.float32, [None, INPUT_NODE], name='x-input')
y = tf.placeholder(tf.float32, [None, OUTPUT_NODE], name='y-input')


w1 = tf.Variable(tf.truncated_normal([INPUT_NODE, hidden_1], stddev=0.1), name="w1")
w2 = tf.Variable(tf.truncated_normal([hidden_1, hidden_2], stddev=0.1), name="w2")

b1 = tf.Variable(tf.constant(0.1, shape=[hidden_1]), name="b1")
b2 = tf.Variable(tf.constant(0.1, shape=[hidden_2]), name="b2")

global_step = tf.Variable(0, trainable=False)

layer1 = tf.nn.relu(tf.add(tf.matmul(x, w1), b1), name="l1")
layer2 = tf.add(tf.matmul(layer1, w2), b2, name="O")

cross_entropy = tf.nn.sparse_softmax_cross_entropy_with_logits(logits=layer2, labels=tf.argmax(y, 1))
cross_entropy_mean = tf.reduce_mean(cross_entropy)
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值