import tensorflow as tf
from tensorflow.keras import layers, models
from tensorflow.keras.datasets import mnist
import os
# Load data
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
# Build model function
def build_model():
model = models.Sequential([
layers.Flatten(input_shape=(28, 28)),
layers.Dense(128, activation='relu'),
layers.Dense(10, activation='softmax')
])
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
return model
# Train and save version 1
model_v1 = build_model()
model_v1.fit(x_train, y_train, epochs=5, validation_split=0.1, verbose=0)
version1_path = 'saved_models/model_v1'
os.makedirs(version1_path, exist_ok=True)
model_v1.save(version1_path)
# Train and save version 2 with more epochs
model_v2 = build_model()
model_v2.fit(x_train, y_train, epochs=10, validation_split=0.1, verbose=0)
version2_path = 'saved_models/model_v2'
os.makedirs(version2_path, exist_ok=True)
model_v2.save(version2_path)
# Load and evaluate both versions
loaded_v1 = tf.keras.models.load_model(version1_path)
loaded_v2 = tf.keras.models.load_model(version2_path)
loss_v1, acc_v1 = loaded_v1.evaluate(x_test, y_test, verbose=0)
loss_v2, acc_v2 = loaded_v2.evaluate(x_test, y_test, verbose=0)
print(f'Version 1 - Loss: {loss_v1:.4f}, Accuracy: {acc_v1:.4f}')
print(f'Version 2 - Loss: {loss_v2:.4f}, Accuracy: {acc_v2:.4f}')