-->

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

Rete Convoluzionale Keras


CNN con tre strati convoluzionali,max-pooling,dropout. EarlyStopping per fermare l'addestramento

Un modello CNN con tre strati convoluzionali seguiti da max-pooling, un layer fully connected con attivazione ReLU e un layer di output softmax per la classificazione.
La funzione di perdita 'categorical_crossentropy' e ottimizzatore 'adam' nella compilazione del modello.
Una callback EarlyStopping per fermare l'addestramento se la variazione della funzione di costo è inferiore a 0.001 per 5 epoche consecutive.
Alla fine, abbiamo valutato il modello sul dataset di test e stampato la funzione di costo e l'accuratezza.
Utilizzando Keras per riconoscere capi di abbigliamento, calzature e accessori dal dataset Fashion-MNIST.

Ottenuto da ChatGPT


import tensorflow as tf
from tensorflow.keras.datasets import fashion_mnist
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, Flatten, Dense, Dropout, MaxPooling2D
from tensorflow.keras.utils import to_categorical
from tensorflow.keras.callbacks import EarlyStopping

# Caricamento del dataset Fashion MNIST
(X_train, y_train), (X_test, y_test) = fashion_mnist.load_data()

# Normalizzazione dei dati
X_train = X_train / 255.0
X_test = X_test / 255.0

# Reshape dei dati per adattarli a Keras (aggiunta della dimensione del canale)
X_train = X_train.reshape(-1, 28, 28, 1)
X_test = X_test.reshape(-1, 28, 28, 1)

# Conversione delle etichette in formato categorico
y_train = to_categorical(y_train)
y_test = to_categorical(y_test)

# Creazione del modello CNN
model = Sequential([
    Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)),  # Primo strato convoluzionale con 32 filtri 3x3
    MaxPooling2D((2, 2)),  # Operazione di MaxPooling per ridurre la dimensione dell'immagine
    Conv2D(64, (3, 3), activation='relu'),  # Secondo strato convoluzionale con 64 filtri 3x3
    MaxPooling2D((2, 2)),  # Operazione di MaxPooling
    Flatten(),  # Appiattimento dei dati per passarli al layer fully connected
    Dense(128, activation='relu'),  # Primo strato fully connected con 128 neuroni
    Dropout(0.5),  # Dropout per ridurre l'overfitting
    Dense(10, activation='softmax')  # Strato di output con 10 neuroni e attivazione softmax
])

# Stampa del summary del modello
model.summary()

# Compilazione del modello
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])

# Definizione del callback EarlyStopping per fermare l'addestramento se la loss non migliora per 5 epoche
early_stopping = EarlyStopping(min_delta=0.001, patience=5)

# Addestramento del modello
history = model.fit(X_train, y_train, epochs=100, validation_data=(X_test, y_test), callbacks=[early_stopping])

# Valutazione del modello sul test set
test_loss, test_accuracy = model.evaluate(X_test, y_test)

# Stampare la funzione di costo e l'accuratezza
print(f"Test Loss: {test_loss}")
print(f"Test Accuracy: {test_accuracy}")