# MNIST in TensorFlow This directory builds a convolutional neural net to classify the [MNIST dataset](http://yann.lecun.com/exdb/mnist/) using the [tf.data](https://www.tensorflow.org/api_docs/python/tf/data), [tf.estimator.Estimator](https://www.tensorflow.org/api_docs/python/tf/estimator/Estimator), and [tf.layers](https://www.tensorflow.org/api_docs/python/tf/layers) APIs. ## Setup To begin, you'll simply need the latest version of TensorFlow installed. Then to train the model, run the following: ``` python mnist.py ``` The model will begin training and will automatically evaluate itself on the validation data. Illustrative unit tests and benchmarks can be run with: ``` python mnist_test.py python mnist_test.py --benchmarks=. ``` ## Exporting the model You can export the model into Tensorflow [SavedModel](https://www.tensorflow.org/programmers_guide/saved_model) format by using the argument `--export_dir`: ``` python mnist.py --export_dir /tmp/mnist_saved_model ``` The SavedModel will be saved in a timestamped directory under `/tmp/mnist_saved_model/` (e.g. `/tmp/mnist_saved_model/1513630966/`). **Getting predictions with SavedModel** Use [`saved_model_cli`](https://www.tensorflow.org/programmers_guide/saved_model#cli_to_inspect_and_execute_savedmodel) to inspect and execute the SavedModel. ``` saved_model_cli run --dir /tmp/mnist_saved_model/TIMESTAMP --tag_set serve --signature_def classify --inputs image=examples.npy ``` `examples.npy` contains the data from `example5.png` and `example3.png` in a numpy array, in that order. The array values are normalized to values between 0 and 1. The output should look similar to below: ``` Result for output key classes: [5 3] Result for output key probabilities: [[ 1.53558474e-07 1.95694142e-13 1.31193523e-09 5.47467265e-03 5.85711526e-22 9.94520664e-01 3.48423509e-06 2.65365645e-17 9.78631419e-07 3.15522470e-08] [ 1.22413359e-04 5.87615965e-08 1.72251271e-06 9.39960718e-01 3.30306928e-11 2.87386645e-02 2.82353517e-02 8.21146413e-18 2.52568233e-03 4.15460236e-04]] ```