深度学习实验:Softmax实现手写数字识别_案例1 softmax实现手写数字识别(4)

MNIST数据集

MNIST手写数字数据集是机器学习领域中广泛使用的图像分类数据集。它包含60,000个训练样本和10,000个测试样本。这些数字已进行尺寸规格化,并在固定尺寸的图像中居中。每个样本都是一个784×1的矩阵,是从原始的28×28灰度图像转换而来的。MNIST中的数字范围是0到9。下面显示了一些示例。 注意:在训练期间,切勿以任何形式使用有关测试样本的信息。

d82bb6e620379b344591a509afe51d7b.png

代码清单

  • data/ 文件夹:存放MNIST数据集。下载数据,解压后存放于该文件夹下。下载链接:MNIST handwritten digit database, Yann LeCun, Corinna Cortes and Chris Burges
  • solver.py 这个文件中实现了训练和测试的流程。;
  • dataloader.py 实现了数据加载器,可用于准备数据以进行训练和测试;
  • visualize.py 实现了plot_loss_and_acc函数,该函数可用于绘制损失和准确率曲线;
  • optimizer.py 实现带momentum的SGD优化器,可用于执行参数更新;
  • loss.py 实现softmax_cross_entropy_loss,包含loss的计算和梯度计算;
  • runner.ipynb 完成所有代码后的执行文件,执行训练和测试过程。

要求

  1. 记录训练和测试的准确率。画出训练损失和准确率曲线;
  2. 比较使用和不使用momentum结果的不同,可以从训练时间,收敛性和准确率等方面讨论差异;
  3. 调整其他超参数,如学习率,Batchsize等,观察这些超参数如何影响分类性能。写下观察结果并将这些新结果记录在报告中。

运行结果如下:

84259c941e8148289a83afc15087a17c.png

a3c743ee83e344f9ad5e00ba3e0b5a39.png

ac816d66a3b74860aaaf9054d5b55d21.png

代码如下:

solver.py

import numpy as np

from layers import FCLayer

from dataloader import build_dataloader
from network import Network
from optimizer import SGD
from loss import SoftmaxCrossEntropyLoss
from visualize import plot_loss_and_acc

class Solver(object):
    def __init__(self, cfg):
        self.cfg = cfg

        # build dataloader
        train_loader, val_loader, test_loader = self.build_loader(cfg)
        self.train_loader = train_loader
        self.val_loader = val_loader
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值