import numpy as np
from tensorflow import keras
from tensorflow.keras import layers
# 加载和预处理数据
(x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data()
x_train = x_train.reshape(-1, 28, 28, 1).astype("float32") / 255.0
x_test = x_test.reshape(-1, 28, 28, 1).astype("float32") / 255.0
y_train = keras.utils.to_categorical(y_train, 10)
y_test = keras.utils.to_categorical(y_test, 10)
# 定义简单的 CNN 模型
def simple_cnn():
model = keras.Sequential([
layers.Conv2D(16, (3, 3), activation='relu', input_shape=(28, 28, 1)),
layers.MaxPooling2D((2, 2)),
layers.Flatten(),
layers.Dense(128, activation='relu'),
layers.Dense(10, activation='softmax')
])
return model
# 定义复杂的 CNN 模型
def complex_cnn():
model = keras.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(256, activation='relu'),
layers.Dense(128, activation='relu'),
layers.Dense(10, activation='softmax')
])
return model
# 定义不同的优化器
optimizers = {
'SGD': keras.optimizers.SGD(learning_rate=0.01),
'Adam': keras.optimizers.Adam(learning_rate=0.001)
}
# 训练不同的模型和优化器组合
epochs = 5
batch_size = 64
for model_name, model_fn in [('Simple CNN', simple_cnn), ('Complex CNN', complex_cnn)]:
for optimizer_name, optimizer in optimizers.items():
model = model_fn()
model.compile(optimizer=optimizer, loss='categorical_crossentropy', metrics=['accuracy'])
print(f"Training {model_name} with {optimizer_name} optimizer:")
history = model.fit(x_train, y_train, epochs=epochs, batch_size=batch_size, validation_data=(x_test, y_test))
train_loss = history.history['loss']
train_acc = history.history['accuracy']
val_loss = history.history['val_loss']
val_acc = history.history['val_accuracy']
print(f"Training Loss: {train_loss}")
print(f"Training Accuracy: {train_acc}")
print(f"Validation Loss: {val_loss}")
print(f"Validation Accuracy: {val_acc}")
python打卡训练营Day41
珂宝_2025-06-02 9:02
相关推荐
问天_观心5 小时前
大模型微调学习(二)洋洋不叫杨杨5 小时前
揭秘当下知名的SEO优化渠道,你知道几个?阿童木写作5 小时前
跨境图片翻译工具推荐:批量处理视频字幕与智能抠图梦想的颜色5 小时前
OCR 识别原理与 Python 识图全实战:从文字提取到图像内容理解禹凕5 小时前
Dijkstra算法详解与应用别走!万哥爱你6 小时前
Python 中可以用于在已排序的列表中查找特定元素的位置的是什么?wxwx_bscxy3227 小时前
基于Python新冠疫情可视化分析系统的设计与实现TechWayfarer8 小时前
Cloudflare 9·15新政倒计时:用IP风险画像识别AI爬虫,防止误伤Googlebot禹凕8 小时前
滑动窗口算法实战指南论文复现现场9 小时前
RTX 4090 24GB 能跑 Qwen3.8-27B 吗?单卡显存计算与云端部署指南