import tensorflow as tf import numpy as np from tensorflow.keras import layers, models # Load MNIST dataset (x_train, y_train), (x_test, y_test) = tf.keras.datasets.mnist.load_data() # Normalize pixel values to 0-1 x_train = x_train / 255.0 x_test = x_test / 255.0 # Add channel dimension (28, 28) -> (28, 28, 1) x_train = x_train[..., tf.newaxis] x_test = x_test[..., tf.newaxis] # Build simple CNN model model = models.Sequential([ layers.Conv2D(32, (3,3), activation='relu', input_shape=(28,28,1)), layers.MaxPooling2D(2,2), layers.Conv2D(64, (3,3), activation='relu'), layers.MaxPooling2D(2,2), layers.Flatten(), layers.Dense(128, activation='relu'), layers.Dense(10, activation='softmax') # 10 digits (0-9) ]) model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy']) model.summary() # Train model.fit(x_train, y_train, epochs=5, validation_split=0.1) # Evaluate test_loss, test_acc = model.evaluate(x_test, y_test) print(f"\nTest accuracy: {test_acc:.4f}") # Save model model.save("mnist_model.h5") print("Model saved as mnist_model.h5")