Piccola DNN con scopo puramente dimostrativo, sufficientemente flessibile da permettere alcuni esperimenti senza toccare neanche una riga di codice.
Scarica e impacchetta il dataset da internet.
Il training viene wffettuato su un batch di 20 immagini per 19900 iterazioni. La struttura della rete è la seguente:
- Convoluzione con ReLU:
x = [None, 28, 28, 1]
w = [5, 5, 1, 32]
inizializzato aN(0, 0.1)
- Padding:
SAME
- Stride:
1
b = [32]
inizializzato a0.1
y = [None, 28, 28, 32]
5 * 5 * 1 * 32 + 32 = 832
variabili
- Maxpooling:
x = [None, 28, 28, 32]
k = [1, 2, 2, 1]
- Padding:
SAME
- Stride:
1
y = [None, 14, 14, 32]
0
variabili
- Convoluzione con ReLU:
x = [None, 14, 14, 32]
w = [5, 5, 32, 64]
inizializzato aN(0, 0.1)
- Padding:
SAME
- Stride:
1
b = [64]
inizializzato a0.1
y = [None, 14, 14, 64]
5 * 5 * 32 * 64 + 64 = 51'264
variabili
- Maxpooling:
x = [None, 14, 14, 64]
k = [1, 2, 2, 1]
- Padding:
SAME
- Stride:
1
y = [None, 7, 7, 64]
0
variabili
- Fully connected layer:
x = [None, 7 * 7 * 64]
w = [7 * 7 * 64, 1024]
b = [1024]
y = [None, 1024]
7 * 7 * 64 * 1024 + 1024 = 3'212'288
variabili
- Dropout:
x = y = [None, 1024]
- Probability is
0.5
in training,1.0
in testing/validation 0
variabili
- Fully connected layer:
x = [None, 1024]
w = [1024, 10]
b = [10]
y = [None, 10]
1024 * 10 + 10 = 10'250
variabili
In totale stiamo parlando di:
3'274'634
Non c'è una vera e propria fase di validazione, si va direttamente al test su 3000 immagine (questo perchè non si è fatto hyperparameter tuning in questo caso molto speciale).
RESULT ACCURACY: 95.4% on notMNIST small dataset, while large is used for training
- Migliorare la visualizzazione di quello che è stato addestrato dalla NN.
- Esportare la versione trainata della rete.