-->

Intelligenza Artificiale

A un certo punto non fu più la biologia a dominare il destino dell'uomo, ma il prodotto del suo cervello: la cultura.
Cosicché: "Le uniche leggi della materia sono quelle che la nostra mente deve architettare e le uniche leggi della mente sono architettate per essa dalla materia".
JAMES CLERK MAXWELL

Classificazione Multiclasse


Processo di trasformazione del Data set MNIST

Classificazione Multiclasse

Processo di trasformazione del Data set MNIST

Per la classificazione Multiclasse, in molti tutorial viene
usato il Data set MNIST.
Ub data set di circa 6000 righe, che pero' per essere usato per le Reti Neurali
Richiede:
  • La trasformazione delle in immagini in formato, in array numpy
  • la normalizzazione del data set

Trasformazione in array

Il prompt usato per chatGPT è:
In python caricare il data base MNIST, Il data set MNIST ha le immagini in formato binario che vanno trasformate in array numpy.
Normalizza il data set. Mostra informazioni sul data set e 5 immagini dopo la trasformazione, usando la funzione plt.imshow.
Usa la funzione reshape per impostare le immagini alla dimensione di 28 X 28 px, scala di colori bianco e nero.
Per ogni immagine che mostri mostra anche la label.

codice 1 step, caricamento e trasformazione array numpy

Il codice ottenuto è

import numpy as np
import matplotlib.pyplot as plt
from keras.datasets import mnist

# Carica il dataset MNIST
(X_train, y_train), (_, _) = mnist.load_data()

# Trasforma le immagini in array numpy e ridimensiona alla dimensione 28x28
X_train = X_train.reshape(X_train.shape[0], 28, 28)

# Mostra informazioni sul dataset
print("Numero di immagini nel training set:", X_train.shape[0])
print("Dimensioni di ciascuna immagine:", X_train.shape[1:], "pixels")

# Mostra 5 immagini con le rispettive label
plt.figure(figsize=(10, 5))
for i in range(5):
    plt.subplot(1, 5, i+1)
    plt.imshow(X_train[i], cmap='gray')
    plt.title("Label: {}".format(y_train[i]))
plt.show()




Questo codice testato su Google Colab
Risponde mostrando 5 immagini e la relativa label (target)

Numero di immagini nel training set: 60000
Dimensioni di ciascuna immagine: (28, 28) pixels

Normalizzazione del Data Set

Ancora con chatGPT

Successivamente Esegui la normalizzazione del data set.
La rete neurale, dovrà avere un output y di 10 classi.
Quindi per y sia training ( y_train) che test (y_test) applicheremo la funzione to_categorical attribuendo il valore a una variabile y_train_dump e y_test_dump.
Per essere sicuri della normalizzazione, stampa il valore massimi di X e y.
Per verificare la corretta applicazione della funzione to_categorical, stampa un esempio variabile y_train_dump e y_test_dump




from keras.utils import to_categorical

# Carica il dataset MNIST
(X_train, y_train), (X_test, y_test) = mnist.load_data()

# Normalizzazione del dataset
X_train = X_train / 255.0
X_test = X_test / 255.0

# Applica la funzione to_categorical alle label
num_classes = 10
y_train_dump = to_categorical(y_train, num_classes)
y_test_dump = to_categorical(y_test, num_classes)

# Stampa dei valori massimi di X e y
print("Massimo valore di X_train:", np.max(X_train))
print("Massimo valore di y_train_dump:", np.max(y_train_dump))

# Verifica dell'applicazione corretta della funzione to_categorical
print("Esempio di y_train_dump[0]:", y_train_dump[0])
print("Esempio di y_test_dump[0]:", y_test_dump[0])



Massimo valore di X_train: 1.0
Massimo valore di y_train_dump: 1.0 Esempio di y_train_dump[0]: [0. 0. 0. 0. 0. 1. 0. 0. 0. 0.]
Esempio di y_test_dump[0]: [0. 0. 0. 0. 0. 0. 0. 1. 0. 0.]