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}")