mirror of
https://github.com/clearlinux/clear-linux-documentation.git
synced 2026-04-28 19:13:46 +00:00
249 lines
7.9 KiB
ReStructuredText
249 lines
7.9 KiB
ReStructuredText
.. _machine-learning:
|
||
|
||
TensorFlow\* machine learning
|
||
#############################
|
||
|
||
This tutorial demonstrates the installation and execution of a TensorFlow\*
|
||
machine learning example on |CL-ATTR|. It uses a Jupyter\* Notebook and MNIST
|
||
data for handwriting recognition.
|
||
|
||
The initial steps show how to set up a Jupyter kernel and run a Notebook
|
||
on a bare-metal |CL| system.
|
||
|
||
.. contents::
|
||
:local:
|
||
:depth: 1
|
||
|
||
Prerequisites
|
||
*************
|
||
|
||
This tutorial assumes you have installed |CL| on your host system. For
|
||
detailed instructions on installing |CL| on a bare metal system, follow the
|
||
:ref:`bare metal installation tutorial<bare-metal-install-desktop>`.
|
||
|
||
Before you install any new packages, update |CL| with the following command:
|
||
|
||
.. code-block:: bash
|
||
|
||
sudo swupd update
|
||
|
||
After your system is updated, add the following bundles to your system:
|
||
|
||
* :command:`machine-learning-web-ui`: This bundle contains the Jupyter application.
|
||
|
||
* :command:`machine-learning-basic`: This bundle contains TensorFlow
|
||
and other useful tools.
|
||
|
||
To install the bundles, run the following commands in your :file:`$HOME`
|
||
directory:
|
||
|
||
.. code-block:: bash
|
||
|
||
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.
|
||
|
||
#. In the :file:`$HOME` directory, create a directory for the Jupyter
|
||
Notebooks named :file:`Notebooks`.
|
||
|
||
.. code-block:: bash
|
||
|
||
mkdir Notebooks
|
||
|
||
#. Within :file:`Notebooks`, create a directory named :file:`Handwriting`.
|
||
|
||
.. code-block:: bash
|
||
|
||
mkdir Notebooks/Handwriting
|
||
|
||
#. Change to the new directory.
|
||
|
||
.. code-block:: bash
|
||
|
||
cd Notebooks/Handwriting
|
||
|
||
#. Copy the :file:`MNIST_example.ipynb` file into the :file:`Handwriting`
|
||
directory.
|
||
|
||
.. note::
|
||
|
||
After installing the :command:`machine-learning basic` bundle, you can find the example code under
|
||
:file:`/usr/share/doc/tensorflow/MNIST_example.ipynb`.
|
||
|
||
|
||
The example code downloads and decompresses the MNIST data directly into the
|
||
:file:`./mnist` directory. Alternatively, download the four files directly
|
||
from the Yann LeCun’s `MNIST Database website`_ and save them into a
|
||
:file:`mnist` directory within the :file:`Handwriting` directory.
|
||
|
||
The files needed are:
|
||
|
||
* `train-images-idx3-ubyte.gz`_: Training set images (9912422 bytes)
|
||
|
||
* `train-labels-idx1-ubyte.gz`_: Training set labels (28881 bytes)
|
||
|
||
* `t10k-images-idx3-ubyte.gz`_: Test set images (1648877 bytes)
|
||
|
||
* `t10k-labels-idx1-ubyte.gz`_: Test set labels (4542 bytes)
|
||
|
||
Run the Jupyter machine learning example code
|
||
*********************************************
|
||
|
||
With |CL|, Jupyter, and TensorFlow installed and configured, you can
|
||
run the example code.
|
||
|
||
#. Go to the :file:`($HOME)/Notebooks` directory and start Jupyter with the
|
||
following commands:
|
||
|
||
.. code-block:: bash
|
||
|
||
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, as shown in
|
||
Figure 1.
|
||
|
||
.. figure:: /_figures/tensorflow/machine-learning-1.png
|
||
:alt: Jupyter file manager
|
||
|
||
Figure 1: The Jupyter file manager shows the list of available files.
|
||
|
||
#. Click on the :file:`Handwriting` directory. The :file:`MNIST_example.ipynb`
|
||
file created earlier should be listed there, as shown in Figure 2.
|
||
|
||
.. figure:: /_figures/tensorflow/machine-learning-2.png
|
||
:alt: Example file within the Jupyter file manager
|
||
|
||
Figure 2: The example file within the Jupyter file manager.
|
||
|
||
#. To run the handwriting example, click on the :file:`MNIST_example.ipynb`
|
||
file to load the notebook, as shown in Figure 3.
|
||
|
||
.. figure:: /_figures/tensorflow/machine-learning-3.png
|
||
:alt: The loaded MNIST_example notebook
|
||
|
||
Figure 3: The loaded MNIST_example notebook within the Jupyter file
|
||
manager.
|
||
|
||
#. Click the |run-cell| button to execute the code in the current cell and
|
||
move to the next.
|
||
|
||
#. Select the :guilabel:`In [2]` cell and click the |run-cell| button to load
|
||
the MNIST data. The successful output is shown on Figure 4.
|
||
|
||
.. figure:: /_figures/tensorflow/machine-learning-4.png
|
||
:alt: Successful import of MNIST data
|
||
|
||
Figure 4: Output after successfully importing the MNIST data.
|
||
|
||
|
||
After the MNIST data is successfully downloaded and extracted into the
|
||
:file:`mnist` directory within the :file:`($HOME)/Notebooks/Handwriting`
|
||
directory, four .gz files are present and the four data sets are created:
|
||
`trainX`, `trainY`, `testX` and `testY`.
|
||
|
||
#. To inspect the imported data, the function in :guilabel:`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. An example is shown in
|
||
Figure 5.
|
||
|
||
.. figure:: /_figures/tensorflow/machine-learning-5.png
|
||
:alt: Function to reshape data.
|
||
|
||
Figure 5: A function reshapes the data and displays the first two
|
||
digits in the `trainX` dataset.
|
||
|
||
#. The :guilabel:`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, as shown in Figure 6. Click the |run-cell| button four
|
||
times to perform these operations.
|
||
|
||
.. figure:: /_figures/tensorflow/machine-learning-6.png
|
||
:alt: Defining, building and training the neural network model
|
||
|
||
Figure 6: Defining, building, and training the neural network model.
|
||
|
||
#. To test the accuracy of the prediction that the system makes, select the
|
||
:guilabel:`In [8]` cell and click the |run-cell| button. In this example,
|
||
the number 6 was predicted with a 99% accuracy, as shown in Figure 7.
|
||
|
||
.. figure:: /_figures/tensorflow/machine-learning-7.png
|
||
:alt: Prediction example
|
||
|
||
Figure 7: The system predicts a number providing the accuracy of the
|
||
prediction.
|
||
|
||
.. note::
|
||
|
||
To retest the accuracy of a random data point's prediction, run the
|
||
cell :guilabel:`In [8]` again. It will take another random data point
|
||
and predict its value.
|
||
|
||
#. To check the accuracy for the whole dataset, select the :guilabel:`In [10]`
|
||
cell and click the |run-cell| button. Our example's accuracy is
|
||
calculated as 97.17%, as shown in Figure 8.
|
||
|
||
.. figure:: /_figures/tensorflow/machine-learning-8.png
|
||
:alt: 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`_.
|
||
|
||
**Congratulations!**
|
||
|
||
You have successfully installed a Jupyter kernel on |CL|. In addition, you
|
||
trained a neural network to successfully predict the values contained in a
|
||
data set of hand-written number images.
|
||
|
||
Related topics
|
||
**************
|
||
|
||
* `MNIST Database website`_
|
||
* `TensorFlow MNIST beginners demo`_
|
||
* `TensorFlow MNIST pros demo`_
|
||
* `Jupyter main website`_
|
||
* `Jupyter documentation`_
|
||
* `MNIST at Wikipedia`_
|
||
|
||
.. _MNIST Database website:
|
||
http://yann.lecun.com/exdb/mnist/
|
||
|
||
.. _train-images-idx3-ubyte.gz:
|
||
http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz
|
||
|
||
.. _train-labels-idx1-ubyte.gz:
|
||
http://yann.lecun.com/exdb/mnist/train-labels-idx1-ubyte.gz
|
||
|
||
.. _t10k-images-idx3-ubyte.gz:
|
||
http://yann.lecun.com/exdb/mnist/t10k-images-idx3-ubyte.gz
|
||
|
||
.. _t10k-labels-idx1-ubyte.gz:
|
||
http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz
|
||
|
||
.. _Jupyter main website: http://jupyter.org/
|
||
|
||
.. _Jupyter documentation: https://jupyter.readthedocs.io/en/latest/index.html
|
||
|
||
.. _TensorFlow MNIST beginners demo:
|
||
https://www.tensorflow.org/get_started/mnist/beginners
|
||
|
||
.. _TensorFlow MNIST pros demo:
|
||
https://www.tensorflow.org/get_started/mnist/pros
|
||
|
||
.. _MNIST at Wikipedia:
|
||
https://en.wikipedia.org/wiki/MNIST_database
|
||
|
||
.. |run-cell| image:: /_figures/tensorflow/run-cell-button.png
|