Neural Network Tutorials - Herong's Tutorial Examples - v1.22, by Herong Yang
Simple TensorFlow Model on MNIST Database
This section provides a tutorial example on how to build a TensorFlow model for the MNIST database. The model is about 92% accurate after training with 100,000 samples.
In the previous tutorial, we learned how to access the MNIST database and fetch sample 28x28 images of handwritten digits. In this tutorial, let's review a simple TensorFlow model on the MNIST database, provided by Seldon Technologies at https://docs.seldon.io/projects/seldon-core/en/v0.3.0/examples/deep_mnist.html
Here is their source code with my comments:
#- mnist_simple_model.py #- Source: https://www.geeksforgeeks.org/introduction-to-tensorflow/ #- Comments added # load MNIST database with the target label converted # to a one-hot vector like 3 -> [0,0,0,1,0,0,0,0,0,0] from tensorflow.examples.tutorials.mnist import input_data mnist = input_data.read_data_sets("MNIST_data/", one_hot = True) import tensorflow as tf # to run a the main script only if __name__ == '__main__': # placeholder for 784 (28x28 pixels) features of input images # can feed a batch of multiple images x = tf.placeholder(tf.float32, [None,784], name="x") # variable for weights, to be optimized W = tf.Variable(tf.zeros([784,10])) # variable for bias, to be optimized b = tf.Variable(tf.zeros([10])) # output function to generate predictions y = tf.nn.softmax(tf.matmul(x,W) + b, name="y") # placeholder for expected targets y_ = tf.placeholder(tf.float32, [None, 10]) # cost function cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y), reduction_indices=[1])) # optimize operation train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy) # initialize operation for all variables: weights W and bias b init = tf.initialize_all_variables() # creates a TensorFlow session sess = tf.Session() # run the initialization operation for weights W and bias b sess.run(init) # loop 1000 batches for i in range(1000): # fetch 100 samples in a batch batch_xs, batch_ys = mnist.train.next_batch(100) # run optimize operation once with the batch sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys}) # operation to compare predictions with targets of the batch correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_,1)) # operation to calculate accuracy: success / total accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32)) # calculate and print accuracy print(sess.run(accuracy, feed_dict = {x: mnist.test.images, y_:mnist.test.labels})) # save the trained model saver = tf.train.Saver() saver.save(sess, "model/deep_mnist_model")
If you run the above script, you should get something like:
herong$ python3 mnist_simple_model.py 0.9152 'model/deep_mnist_model'
Not too bad. After training with 100,000 (1000x100) samples, the model is about 91.52% accurate.
Table of Contents
Deep Playground for Classical Neural Networks
Building Neural Networks with Python
Simple Example of Neural Networks
►TensorFlow - Machine Learning Platform
"tensorflow" - TensorFlow Python Library
"tensorflow" Interactive Test Web Page
TensorFlow Session Class and run() Function
TensorFlow Variable Class and load() Function
Linear Regression with TensorFlow
tensorflow.examples.tutorials.mnist Module
mnist.read_data_sets() Is Deprecated
►Simple TensorFlow Model on MNIST Database
Commonly Used TensorFlow functions
PyTorch - Machine Learning Platform
CNN (Convolutional Neural Network)
RNN (Recurrent Neural Network)
GAN (Generative Adversarial Network)