MNIST例子构建tensorflow Android应用
来源:互联网 发布:淘宝男质量好的店铺 编辑:程序博客网 时间:2024/04/28 19:10
和谷歌给的例子差异,是这里给出了如何生成所需要的pb文件:
https://github.com/MindorksOpenSource/AndroidTensorFlowMNISTExample
生成PB模型文件python mnist.py
mnist.py
from __future__ import print_functionimport shutilimport os.pathimport tensorflow as tffrom tensorflow.examples.tutorials.mnist import input_dataEXPORT_DIR = './model'if os.path.exists(EXPORT_DIR): shutil.rmtree(EXPORT_DIR)mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)# Parameterslearning_rate = 0.001training_iters = 200000batch_size = 128display_step = 10# Network Parametersn_input = 784 # MNIST data input (img shape: 28*28)n_classes = 10 # MNIST total classes (0-9 digits)dropout = 0.75 # Dropout, probability to keep units# tf Graph inputx = tf.placeholder(tf.float32, [None, n_input])y = tf.placeholder(tf.float32, [None, n_classes])keep_prob = tf.placeholder(tf.float32) # dropout (keep probability)# Create some wrappers for simplicitydef conv2d(x, W, b, strides=1): # Conv2D wrapper, with bias and relu activation x = tf.nn.conv2d(x, W, strides=[1, strides, strides, 1], padding='SAME') x = tf.nn.bias_add(x, b) return tf.nn.relu(x)def maxpool2d(x, k=2): # MaxPool2D wrapper return tf.nn.max_pool(x, ksize=[1, k, k, 1], strides=[1, k, k, 1], padding='SAME')# Create Modeldef conv_net(x, weights, biases, dropout): # Reshape input picture x = tf.reshape(x, shape=[-1, 28, 28, 1]) # Convolution Layer conv1 = conv2d(x, weights['wc1'], biases['bc1']) # Max Pooling (down-sampling) conv1 = maxpool2d(conv1, k=2) # Convolution Layer conv2 = conv2d(conv1, weights['wc2'], biases['bc2']) # Max Pooling (down-sampling) conv2 = maxpool2d(conv2, k=2) # Fully connected layer # Reshape conv2 output to fit fully connected layer input fc1 = tf.reshape(conv2, [-1, weights['wd1'].get_shape().as_list()[0]]) fc1 = tf.add(tf.matmul(fc1, weights['wd1']), biases['bd1']) fc1 = tf.nn.relu(fc1) # Apply Dropout fc1 = tf.nn.dropout(fc1, dropout) # Output, class prediction out = tf.add(tf.matmul(fc1, weights['out']), biases['out']) return out# Store layers weight & biasweights = { # 5x5 conv, 1 input, 32 outputs 'wc1': tf.Variable(tf.random_normal([5, 5, 1, 32])), # 5x5 conv, 32 inputs, 64 outputs 'wc2': tf.Variable(tf.random_normal([5, 5, 32, 64])), # fully connected, 7*7*64 inputs, 1024 outputs 'wd1': tf.Variable(tf.random_normal([7 * 7 * 64, 1024])), # 1024 inputs, 10 outputs (class prediction) 'out': tf.Variable(tf.random_normal([1024, n_classes]))}biases = { 'bc1': tf.Variable(tf.random_normal([32])), 'bc2': tf.Variable(tf.random_normal([64])), 'bd1': tf.Variable(tf.random_normal([1024])), 'out': tf.Variable(tf.random_normal([n_classes]))}# Construct modelpred = conv_net(x, weights, biases, keep_prob)# Define loss and optimizercost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(pred, y))optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate).minimize(cost)# Evaluate modelcorrect_pred = tf.equal(tf.argmax(pred, 1), tf.argmax(y, 1))accuracy = tf.reduce_mean(tf.cast(correct_pred, tf.float32))# Initializing the variablesinit = tf.initialize_all_variables()# Launch the graphwith tf.Session() as sess: sess.run(init) step = 1 # Keep training until reach max iterations while step * batch_size < training_iters: batch_x, batch_y = mnist.train.next_batch(batch_size) # Run optimization op (backprop) sess.run(optimizer, feed_dict={x: batch_x, y: batch_y, keep_prob: dropout}) if step % display_step == 0: # Calculate batch loss and accuracy loss, acc = sess.run([cost, accuracy], feed_dict={x: batch_x, y: batch_y, keep_prob: 1.}) print("Iter " + str(step * batch_size) + ", Minibatch Loss= " + \ "{:.6f}".format(loss) + ", Training Accuracy= " + \ "{:.5f}".format(acc)) step += 1 print("Optimization Finished!") # Calculate accuracy for 256 mnist test images print("Testing Accuracy:", \ sess.run(accuracy, feed_dict={x: mnist.test.images[:256], y: mnist.test.labels[:256], keep_prob: 1.})) WC1 = weights['wc1'].eval(sess) BC1 = biases['bc1'].eval(sess) WC2 = weights['wc2'].eval(sess) BC2 = biases['bc2'].eval(sess) WD1 = weights['wd1'].eval(sess) BD1 = biases['bd1'].eval(sess) W_OUT = weights['out'].eval(sess) B_OUT = biases['out'].eval(sess)# Create new graph for exportingg = tf.Graph()with g.as_default(): x_2 = tf.placeholder("float", shape=[None, 784], name="input") WC1 = tf.constant(WC1, name="WC1") BC1 = tf.constant(BC1, name="BC1") x_image = tf.reshape(x_2, [-1, 28, 28, 1]) CONV1 = conv2d(x_image, WC1, BC1) MAXPOOL1 = maxpool2d(CONV1, k=2) WC2 = tf.constant(WC2, name="WC2") BC2 = tf.constant(BC2, name="BC2") CONV2 = conv2d(MAXPOOL1, WC2, BC2) MAXPOOL2 = maxpool2d(CONV2, k=2) WD1 = tf.constant(WD1, name="WD1") BD1 = tf.constant(BD1, name="BD1") FC1 = tf.reshape(MAXPOOL2, [-1, WD1.get_shape().as_list()[0]]) FC1 = tf.add(tf.matmul(FC1, WD1), BD1) FC1 = tf.nn.relu(FC1) W_OUT = tf.constant(W_OUT, name="W_OUT") B_OUT = tf.constant(B_OUT, name="B_OUT") # skipped dropout for exported graph as there is no need for already calculated weights OUTPUT = tf.nn.softmax(tf.matmul(FC1, W_OUT) + B_OUT, name="output") sess = tf.Session() init = tf.initialize_all_variables() sess.run(init) graph_def = g.as_graph_def() tf.train.write_graph(graph_def, EXPORT_DIR, 'mnist_model_graph.pb', as_text=False) # Test trained model y_train = tf.placeholder("float", [None, 10]) correct_prediction = tf.equal(tf.argmax(OUTPUT, 1), tf.argmax(y_train, 1)) accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float")) print("check accuracy %g" % accuracy.eval({x_2: mnist.test.images, y_train: mnist.test.labels}, sess))
重要的
graph_def = g.as_graph_def()tf.train.write_graph(graph_def, EXPORT_DIR, 'mnist_model_graph.pb', as_text=False)
阅读全文
0 0
- MNIST例子构建tensorflow Android应用
- Tensorflow mnist 例子
- Tensorflow中的mnist例子
- tensorflow mnist例子流程浅析
- Tensorflow MNIST for Android
- tensorflow构建RNN识别mnist手写数字
- Tensorflow #1 祖传例子 MNIST 手写识别
- TensorFlow学习笔记(2)--运行MNIST例子
- TensorFlow的softmax regression做mnist例子
- TensorFlow的cnn做mnist例子
- [06]tensorflow源码例子mnist源码——mnist.py
- tensorflow源码例子mnist源码——mnist.py
- tensorflow Mnist
- tensorflow +mnist
- tensorflow mnist
- MNIST tensorflow
- [07]tensorflow源码例子mnist源码——fully_connected_feed.py
- tensorflow源码例子mnist源码——fully_connected_feed.py
- Jackson系统给您介绍何为娱乐文化优先股!
- hihoCoder1310—岛屿(搜索)
- 多线程情况下单例的写法
- 欢迎使用CSDN-markdown编辑器
- java接口
- MNIST例子构建tensorflow Android应用
- 新闻客户端
- Java exception throws && throw 的区别
- NAT技术与代理服务器调研
- 登录OneDrive
- Caffe安装过程全记录
- asp.net前台调用后台方法(或asp.net中Repeater控件绑定后台方法)
- FFmpeg的rtmp
- 算法作业HW20 202. Happy Number