项目简介
本项目运用对比学习对MNIST数据集开展预训练与分类工作。借助构建卷积神经网络模型,采用自定义的对比损失函数进行预训练,从而提取有用的特征表示。之后,在预训练模型的基础上搭建分类器,执行数字分类任务,并在测试集上评估其性能。
项目的主要特性和功能
- 数据准备:从MNIST数据集加载训练和测试数据,利用自定义的
DataGenerator
生成器为对比学习任务生成minibatch样本和标签。 - 模型构建:使用Keras构建卷积神经网络模型,涵盖用于对比学习的编码器和投影头。
- 自定义对比损失函数:实现自定义的对比损失函数,用于计算模型在对比学习任务中的损失。
- 预训练模型:通过对比学习任务训练模型,提取有用的特征表示。
- TSNE可视化:运用t - SNE算法对模型提取的特征进行可视化,了解学习到的特征的分布情况。
- 构建分类器:在预训练模型的基础上,添加多层感知器(MLP)层,用于最终的数字分类任务。
- 训练分类器:使用标签训练分类器,并在测试集上评估其性能,报告分类任务的准确率。
- 预测单个图像:添加功能,用于预测单个输入图像的数字标签。
- 保存和加载模型:训练完成后,将分类器模型保存到文件中,便于在其他项目中重用或在训练中断后恢复训练。
安装使用步骤
环境准备
- 确保已安装Python 3.x。
- 安装必要的Python库:
pip install numpy tensorflow keras matplotlib sklearn
。
运行项目
- 打开终端或命令行,导航到项目根目录。
- 运行
main.py
文件:python main.py
。
查看结果
- 项目运行后,将在终端输出分类任务的准确率。
- 可视化结果将通过matplotlib库显示,展示t - SNE降维后的特征分布图。
模型保存与加载
- 训练完成后,分类器模型将保存为
mnist_classifier.h5
文件。 - 可以使用
test.py
文件加载保存的模型,进行单个图像的预测测试。
通过以上步骤,您可以成功运行本项目,并利用预训练的模型进行MNIST数据集的数字识别任务。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】