第J2周:ResNet50V2算法实战与解析
- 🍨 本文为🔗365天深度学习训练营 中的学习记录博客
- 🍖 原作者:K同学啊
batch_size=32:每次训练取32张图像组成一个 batch
img_size=(224, 224):图像输入大小匹配 ResNet50 的输入要求
epochs=10:训练 10 个 epoch(每张图会被网络看到 10 次)
validation_split=0.2:80%训练,20%验证
subset 决定加载哪部分
seed=123 保证划分可复现
自动 resize 到 224x224,适配模型输入要求
Rescaling(1./255):将图像缩放
map():对所有图像应用归一化
cache():将数据缓存到内存或磁盘,加快读取速度
shuffle(1000):打乱训练集,防止过拟合
prefetch():并行加载数据,提高 GPU 利用率
加载预训练的 ResNet50V2,使用 imagenet 权重
设置为 trainable = False,表示只训练添加的层,主干网络权重保持不变
GlobalAveragePooling2D():将卷积后的 7x7 特征图变为一维向量
Dense(3, activation=‘softmax’):输出3个类别的概率
Adam 优化器:自适应学习率算法,收敛快
sparse_categorical_crossentropy:因为图像标签是整数编码,需要使用sparse 版本
accuracy:分类准确率
模型会按 batch 大小循环训练,并在每轮后用验证集评估
返回 history 对象用于记录每轮的 loss/acc
保存模型结构 + 权重 + 优化器状态
在验证集上评估性能,输出损失和准确率
Train Acc约 61%(在第 1 个 epoch 就趋于稳定),Val Acc稳定在 61.5% 左右
rain Loss平稳下降,Val Loss跟随下降,说明无明显过拟合。