| import tensorflow as tf |
| import numpy as np |
| from tensorflow.keras import layers, models |
|
|
| |
| (x_train, y_train), (x_test, y_test) = tf.keras.datasets.mnist.load_data() |
|
|
| |
| x_train = x_train / 255.0 |
| x_test = x_test / 255.0 |
|
|
| |
| x_train = x_train[..., tf.newaxis] |
| x_test = x_test[..., tf.newaxis] |
|
|
| |
| 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') |
| ]) |
|
|
| model.compile(optimizer='adam', |
| loss='sparse_categorical_crossentropy', |
| metrics=['accuracy']) |
|
|
| model.summary() |
|
|
| |
| model.fit(x_train, y_train, epochs=5, validation_split=0.1) |
|
|
| |
| test_loss, test_acc = model.evaluate(x_test, y_test) |
| print(f"\nTest accuracy: {test_acc:.4f}") |
|
|
| |
| model.save("mnist_model.h5") |
| print("Model saved as mnist_model.h5") |