Les 3 - Tensorflow

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

This lesson contains 19 slides, with text slides.

Items in this lesson

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

Slide 1 - Slide

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 - Slide

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 - Slide

deelbaar document met uitleg en uitvoerbare Python code

Slide 4 - Slide

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

Slide 5 - Slide

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 - Slide

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 - Slide

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 - Slide

De eerste stappen:

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

Slide 10 - Slide

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 - Slide

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 - Slide

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

Slide 13 - Slide

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 - Slide

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 - Slide

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 - Slide

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 - Slide

Nut van het model evalueren

Slide 18 - Slide

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 - Slide