This tutorial will demonstrate the installation and execusion of a TensorFlow* machine learning example on Clear Linux* OS. It uses a Jupyter* Notebook and MNIST data for handwriting recognition.

The initial steps will have you set up a Jupyter kernel and run a Notebook on a bare-metal Clear Linux OS system.


This tutorial assumes you have installed Clear Linux OS on your host system. For detailed instructions on installing Clear Linux OS on a bare metal system, follow the bare metal installation tutorial.

Before you install any new packages, update Clear Linux OS with the following command:

sudo swupd update

Once your system is updated, add the following bundles to your system:

  • machine-learning-web-ui: This bundle contains the Jupyter application.
  • machine-learning-basic: This bundle contains TensorFlow and other useful tools.

To install the bundles, run the following commands in your $HOME directory:

sudo swupd bundle-add machine-learning-web-ui

sudo swupd bundle-add machine-learning-basic

Set up a Jupyter notebook

With all required packages and libraries installed, set up the file structure for the Jupyter Notebook.

  1. In the $HOME directory, create a directory for the Jupyter Notebooks named Notebooks.

    mkdir Notebooks
  2. Within Notebooks, create a directory named Handwriting.

    mkdir Notebooks/Handwriting
  3. Change to the new directory.

    cd Notebooks/Handwriting
  4. Copy the MNIST_example.ipynb file into the Handwriting directory.


    After installing the machine-learning basic bundle, you can find the example code under /usr/share/doc/tensorflow/MNIST_example.ipynb.

The example code downloads and decompresses the MNIST data directly into the ./mnist directory. Alternatively, download the four files directly from the Yann LeCun’s MNIST Database website and save them into a mnist directory within the Handwriting directory.

The files needed are:

Run the Jupyter machine learning example code

With Clear Linux OS, Jupyter, and TensorFlow installed and configured, we can run the example code.

  1. Go to the ($HOME)/Notebooks directory and start Jupyter with the following commands:

    cd ~/Notebooks
    jupyter notebook

    The Jupyter server starts and opens a web browser showing the Jupyter file manager with a list of files in the current directory, see figure 1.

    Jupyter file manager

    Figure 1: The Jupyter file manager shows the list of available files.

  2. Click on the Handwriting directory. The MNIST_example.ipynb file created earlier should be listed there, see figure 2.

    Example file within the Jupyter file manager

    Figure 2: The example file within the Jupyter file manager.

  3. To run the hand writing example, click on the MNIST_example.ipynb file to load the notebook, see figure 3.

    The loaded MNIST_example notebook

    Figure 3: The loaded MNIST_example notebook within the Jupyter file manager.

  4. Click the run-cell button to execute the code in the current cell and move to the next.

  5. Select the In [2] cell and click the run-cell button to load the MNIST data. The successful output is shown on figure 4.

    Successful import of MNIST data

    Figure 4: Output after successfully importing the MNIST data.

    After the MNIST data was successfully downloaded and extracted into the mnist directory within the ($HOME)/Notebooks/Handwriting directory, four .gz files are present and the four data sets were created: trainX, trainY, testX and testY.

  6. To inspect the imported data, the function in In [3] first instructs Jupyter to reshape the data into an array of 28 x 28 images and to plot the area in a 28 x 28 grid. Click the run-cell button twice to show the first two digits in the trainX dataset, see figure 5.

    Function to reshape data.

    Figure 5: A function reshapes the data and displays the first two digits in the trainX dataset.

  7. The In [4] cell defines the neural network. It provides the inputs, defines the hidden layers, runs the training model, and sets up the output layer, see figure 6. Click the run-cell button four times to perform these operations.

    Defining, building and training the neural network model

    Figure 6: Defining, building and training the neural network model.

  8. To test the accuracy of the prediction the system makes, select the In [8] cell and click the run-cell button. In this example, the number 6 was predicted with a 99% accuracy, see figure 7.

    Prediction example

    Figure 7: The system predicts a number providing the accuracy of the prediction.


    To retest the accuracy of a random data point’s prediction, run the cell In [8] again. It will take another random data point and predict its value.

  9. To check the accuracy for the whole dataset, select the In [10] cell and click the run-cell button. Our example’s accuracy is calculated as 97.17%, see figure 8.

    System's accuracy

    Figure 8: The system’s accuracy for the entire data set.

For more in-depth information on the model used and the mathematics it entails, visit the TensorFlow tutorials TensorFlow MNIST beginners demo and TensorFlow MNIST pros demo.


You have successfully installed a Jupyter kernel on Clear Linux OS. In addition, you trained a neural network to successfully predict the values contained in a data set of hand-written number images.