Les 3 - Tensorflow

Python intro
Programming basics-II
Les 3 / Week 7a
Machine Learning met Tensorflow
FUT: Future Tech
Les 3
1 / 19
volgende
Slide 1: Tekstslide
Applicatie- en mediaontwikkelaarMBOStudiejaar 1

In deze les zitten 19 slides, met tekstslides.

Onderdelen in deze les

Python intro
Programming basics-II
Les 3 / Week 7a
Machine Learning met Tensorflow
FUT: Future Tech
Les 3

Slide 1 - Tekstslide

Deze les
Na deze theoretische les weet/ken je:
  • Hoe we handschrift herkenning trainen met TensorFlow
Daarvoor moeten we weten:
  • Wat TensorFlow is
  • Wat een Jupyter Notebook is
  • Wat de MNIST dataset is

Slide 2 - Tekstslide

open-source machine learning framework
  • Programmeertalen: Python, Mojo
  • Ontwikkeld door Google
  • Deep learning models trainen
  • Neurale netwerken voor taken zoals beeldclassificatie, natuurlijke taalverwerking en versterkend leren

Slide 3 - Tekstslide

deelbaar document met uitleg en uitvoerbare Python code

Slide 4 - Tekstslide

Google Colab Jupyter Notebook
Python code wordt online uitgevoerd op Cloudomgeving van Google

Slide 5 - Tekstslide

Een AI trainen op de MNIST dataset
  • Bevat 60.000 training en 10.000 testvoorbeelden van handgeschreven cijfers.
  • Cijfers zijn gestandaardiseerd qua grootte en gecentreerd in een vaste afbeeldingsgrootte
  • Geschikt voor het testen van ML patroonherkenning met minimale preprocessing. Ofwel: de dataset is meteen klaar voor gebruik in Machine Learning.

Slide 6 - Tekstslide

Wat gaan we doen?
De notebook geeft een introductie waarin we het volgende doen:
  1. Een vooraf gebouwde dataset laden.
  2. Met machine learning een AI neural network bouwen dat afbeeldingen classificeert.
  3. Dit neural network trainen.
  4. De nauwkeurigheid van het AI-model evalueren.
Naast de uitleg die al in de Google Colab wordt gegeven, geeft deze LessonUp uitleg in andere woorden (in het Nederlands)

Slide 8 - Tekstslide

Waarom online en niet lokaal?
Alles wat we in deze les online in de Google Colab doen, kan ook lokaal in Python.

Voor deze les is het makkelijker om dit eerst online te ervaren in de Google Colab Jupyter notebook.

Slide 9 - Tekstslide

De eerste stappen:

Druk op de 'Play' knop voor het eerste code-block. We importeren Tensorflow.

Slide 10 - Tekstslide

De eerste stappen
Druk op de Play knop voor het tweede code-block om de MNIST dataset te laden.
Zorg dat je code-blokken op volgorde uitvoert, en niet tussendoor iets vergeet (alle notebook code bouwt verder op vorige uitvoer en wordt tussendoor onthouden)

x_train = afbeeldingen
y_train = labels (0 t/m 9)

Slide 11 - Tekstslide

from matplotlib import pyplot as plt
import numpy as np
first_image = x_test[0]
first_image = np.array(first_image, dtype='float')
pixels = first_image.reshape((28, 28))
plt.imshow(pixels, cmap='gray')
plt.show()

Slide 12 - Tekstslide

(x_train, y_train), (x_test, y_test) = mnist.load_data()

Slide 13 - Tekstslide

Deze code creëert een specifiek type model, een sequentieel model genaamd, dat lijkt op het op elkaar stapelen van verschillende lagen. Elke laag voert bepaalde berekeningen uit op de gegevens.

  • Flatten Layer: De eerste laag, Flatten, wordt gebruikt om de invoergegevens, in dit geval een afbeelding van 28x28 pixels (2D), om te zetten in een 1D-array (of vector) met 784 elementen. Dit maakt het voor het model gemakkelijker om met de gegevens te werken.
  • Dense layers: Deze laag heeft 128 neuronen en gebruikt de 'relu'-activeringsfunctie. In deze lagen gebeurt het meeste leren in het model. (Een "ReLU"-activatie is als een speciaal soort schakelaar die op basis van verbindingssterkte wel of niet activeert en output doorgeeft aan de volgende neuron)
  • Dropout-laag: deze laag laat willekeurig een deel van de output van de neuronen vallen tijdens de training om overfitting te voorkomen.
  • Nog een dense layer: deze laag heeft 10 neuronen, die overeenkomen met de 10 mogelijke klassen (categorieën) waarin het model de invoergegevens probeert te classificeren, de cijfers: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9

Slide 14 - Tekstslide

Voorspellingen (Predictions): x_train[:1] aan het model vragen geeft 'logits' (ruwe score dat de zekerheid aangeeft van de voorspelling)

Logits converteren naar voorspellingen (statistische waarschijnlijkheid): Softmax zet die logit om naar een waarschijnlijkheid als percentage. Het laat zien wat de waarschijnlijkste output is (0 t/m 9) voor de gegeven input (een afbeelding van een cijfer)

Slide 15 - Tekstslide

Na bouwen eerst het model compileren
Bij het compileren leggen we ons gebouwde 'leerplan' vast en geven we de laatste instellingen en parameters voordat we gaan leren:

1. Optimizer: de strategie die het model zal gebruiken om zijn voorspellingen te verbeteren naarmate het meer voorbeelden ziet. "Adam" is bijvoorbeeld een veelgebruikte optimalisator.

2. Loss Function: Deze functie evalueert het verschil tussen de voorspellingen van het model en de werkelijke antwoorden.

3. Metrics: Hier kun je specificeren welke prestatie-indicatoren je wilt volgen tijdens de training. Het meest voorkomende is "accuracy," dat laat zien hoe vaak het model correcte voorspellingen maakt.

Slide 16 - Tekstslide

Na compileren, eindelijk trainen met model.fit
Nadat het model is gecompileerd en alle instellingen zijn opgegeven, kun je beginnen met het daadwerkelijke trainingsproces door model.fit te gebruiken. Hier geef je de trainingsgegevens aan het model, en het model past zijn interne gewichten (weights) en parameters aan om beter te presteren op de gegeven taak.

Slide 17 - Tekstslide

Nut van het model evalueren

Slide 18 - Tekstslide

Inference op het getrainde model
Voeg zelf helemaal onderaan de notebook een code blok toe. Kopieer daarin deze code: https://pastebin.com/XfN36hhf

 Met de code gaan we (op basis van de test dataset) kijken of het model voorspellingen kan uitoefenen.


Als je ergens online een afbeelding kan
uploaden kun je met deze code inference
uitoefenen:

Slide 19 - Tekstslide