littlebot
Published on 2025-04-17 / 0 Visits
0

【源码】基于numpy的图像分类三层神经网络分类器

项目简介

本项目手动搭建了一个三层神经网络分类器,不依赖pytorch、tensorflow等现成的支持自动微分的深度学习框架,仅使用numpy实现。该分类器在Fashion - MNIST数据集上进行训练,以完成图像分类任务。代码采用模块化设计,涵盖模型、训练、测试和参数查找等部分。

项目的主要特性和功能

  1. 模型灵活性:支持自定义隐藏层大小和激活函数类型,可通过反向传播计算给定损失的梯度。
  2. 训练优化:实现SGD优化器,具备学习率下降、交叉熵损失和L2正则化功能,能依据验证集指标自动保存最优的模型权重。
  3. 参数查找:可调节学习率、隐藏层大小、正则化强度等超参数,观察并记录模型在不同超参数下的性能。
  4. 测试功能:支持导入训练好的模型,输出在测试集上的分类准确率。
  5. 可视化:能对保存的最优模型进行参数可视化。

安装使用步骤

假设已下载本项目的源码文件,按以下步骤操作:

数据准备

确保Fashion - MNIST数据集准备就绪。

模型训练

在根目录下运行 python train.py,可自行指定模型训练中的参数,例如: powershell python train -e 50 -vs 1000 -bs 32 -lr 0.01 -l2 0.001 -dr 0.95 -ds 5000 参数含义: - -e:训练epoch数,默认50 - -vs:valid_size 测试集大小,默认1000 - -bs:batch_size,默认32 - -lr:学习率,默认0.01 - -l2:L2正则化参数,默认0.001 - -dr:学习率衰减率,默认0.95 - -ds:学习率衰减步数,默认5000(未使用衰减)

模型结构有关的超参数(如各层神经元的数量以及激活函数),可在 train.py 文件中进行修改。

模型测试

运行了模型训练代码 train.py 后,若选择了 save_model = TRUE,则会在 model/ 目录下保存训练出的最优模型参数。在根目录运行以下代码即可读取最优模型参数进行预测: powershell python test.py 将会输出模型在测试集上的 $Loss$ 和 $Accuracy$。

模型参数可视化

在模型训练完成后,在根目录运行以下代码可以对保存的最优模型进行参数可视化: powershell python PlotParam.py

超参数网格搜索

运行 param_select.py,即可进行超参数的网格搜索(该操作耗时较久): powershell python param_select.py 在代码文件内可以自行设置搜索参数的网格值,最终各网格值的 LossAccuracy 会自动保存在 paramsearch_results.json 文件中。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】