第T8周:猫狗识别

第T8周:猫狗识别

tf.config.list_physical_devices("GPU"),用于检测当前系统是否有可用的 GPU,并将结果存入 gpus 变量。如果系统检测到 GPU,代码会选择第一块 GPU(gpu0 = gpus[0]),然后调用tf.config.experimental.set_memory_growth(gpu0, True) 来启用 GPU。

设定 batch_size=8,即每次训练时取 8 张图片进行计算。

设定图像大小 224x224,这样所有加载的图片都会被调整到该尺寸,以确保模型输入维度一致。

seed=12:固定随机种子,确保数据划分不会因多次运行而变化。image_size=(img_height, img_width):调整所有图片大小为 224x224。batch_size=batch_size:每批次加载 8 张图片。

数据集中共有3400 张图片,分别属于2个类别。其中,2720张作为训练集,680张作为验证集。

这个批次包含 8 张图片(因为 batch_size=8),每张图片的尺寸是 224x224。 图片有 3 个通道。

Label_batch是形状(8,)的张量,这些标签对应8张图片

cache(),将数据缓存在内存中,提高训练速度

shuffle(1000):打乱训练数据,缓冲区大小是 1000

prefetch(buffer_size=AUTOTUNE):异步加载数据,加速训练过程(AUTOTUNE 会自动选择合适的预取大小)

layers.Rescaling(1./255):把像素值从 [0, 255] 缩放到 [0.0, 1.0]

map(lambda x, y: ...):对数据集中的每张图片 x 应用归一化操作,标签 y 保持不变

从 val_ds 中取出一个 batch(默认是 (batch_size, height, width, 3))

多分类任务的 VGG16 卷积神经网络,保留了 VGG16 的经典结构(13 个卷积层 + 3 个全连接层),输出为 nb_classes 类的 softmax 结果。

输入图像的 shape 是 (img_width, img_height, 3),支持 RGB 彩图。

每个 block 都由若干个 3x3 卷积层(带 ReLU 激活),一个 2x2 最大池化层

每个卷积层都使用 'same' padding 保证输出尺寸一致,池化后尺寸减半。

Flatten(),把多维 feature map 展平成一维向量。

两个 Dense(4096) 层,经典的全连接层(重参数)。

Dense(nb_classes, activation='softmax'),输出最终的分类概率。

img_width, img_height 是图像的宽和高(为 224x224 默认的 VGG 输入尺寸)。


tqdm 是一个进度条库,显示每轮训练/验证的进度。

总共训练10 个 epochs,初始学习率设置为 0.0001。

每轮将学习率乘以 0.92,手动设置给模型的优化器。

遍历 train_ds,对每一个 batch 使用 model.train_on_batch() 进行训练。把最后一个 batch 的 loss 和 accuracy 存进历史列表。保存最后一个 batch 的验证指标。

Training and Validation Accuracy

随着训练的进行,两条线都持续上升,验证准确率与训练准确率接近,

模型在训练集与验证集上都学习得不错。

Training and Validation Loss

两条线都持续下降,并且非常接近,说明模型在两个数据集上都表现出良好的收敛趋势,没有过拟合现象。

相关推荐
Ro Jace6 小时前
机器学习、深度学习、信号处理领域常用符号速查表
深度学习·机器学习·信号处理
rengang668 小时前
03-深度学习与机器学习的对比:分析深度学习与传统机器学习的异同
人工智能·深度学习·机器学习
咕咚-萌西8 小时前
DeepSeek-OCR
人工智能·深度学习·ocr
rengang669 小时前
04-深度学习的基本概念:涵盖深度学习中的关键术语和原理
人工智能·深度学习
java1234_小锋9 小时前
PyTorch2 Python深度学习 - 卷积神经网络(CNN)介绍实例 - 使用MNIST识别手写数字示例
python·深度学习·cnn·pytorch2
雍凉明月夜9 小时前
人工智能学习中深度学习之python基础之迭代器、生成器、文件处理和模块等
python·深度学习·学习·pycharm
文火冰糖的硅基工坊9 小时前
[人工智能-大模型-122]:模型层 - RNN是通过神经元还是通过张量时间记录状态信息?时间状态信息是如何被更新的?
人工智能·rnn·深度学习
Dev7z9 小时前
基于深度学习的中国交通警察手势识别与指令优先级判定系统
人工智能·深度学习
程序员柳10 小时前
基于深度学习技术实现染色质开放区域的预测与分析系统源代码+数据库,采用Flask + Vue3 实现前后端分离的植物染色质可及性预测系统
数据库·深度学习·flask