机器学习基础实验报告
实验二:
一、实验目的
- 学习Gluon基础语法
- 学习如何使用MXNet提供的Gluon接口更方便地实现线性回归的训练
- 学习通过使用训练集图像训练多层神经网络模型,并利用该模型在测试集上预测手写数字类别,输出分类准确率,给出分类结果
二、实验内容和步骤
练习一:
查阅MXNet文档,看看 gluon.loss 和 mxnet.init 模块里提供了哪些损失函数和初始化方法
练习二:
如果将 l = loss(net(X), y) 替换成 l = loss(net(X), y).mean() ,我们需要将
trainer.step(batch_size) 相应地改成 trainer.step(1) 。这是为什么呢?
如何访问 dense.weight 的梯度?
尝试使用不同的学习率和batch_size(批量大小),观察损失函数值的下降快慢。
练习三:
查阅MXNet文档, mxnet.gluon.data.vision 里还提供了哪些别的数据集?
查阅MXNet文档, mxnet.gluon.data.vision.transforms 还提供了哪些别的变换方法?
绘制误差loss,训练准确率train acc和测试准确率test acc随迭代次数变化的曲线。
尝试使用其他激活函数,并多加入几个隐藏层,调节每个隐藏层的神经元数量,看看对预测结果
准确率的影响。
尝试调一调超参数,如批量大小,迭代周期和学习率,看看结果会怎样。
基于服饰图像数据集FashionMNIST,采用本节代码方法训练至少含一个隐藏层的神经网络模型,
从而实现对服饰图像的分类(要求输出测试集前20幅图像的模型分类),单独建一个工程文件(下
面给出两点提示)
(1) 采用如下方式下载数据集: Fashionmnist_train =
gdata.vision.FashionMNIST(root='data/FashionMNIST',train=True) Fashionmnist_test =
gdata.vision.FashionMNIST(root='data/FashionMNIST',train=False)
(2) Fashion-MNIST中一共包括了10个类别,分别为t-shirt(T恤)、trouser(裤子)、pullover
(套衫)、dress(连衣裙)、coat(外套)、sandal(凉鞋)、shirt(衬衫)、sneaker(运动
鞋)、bag(包)和ankle boot(短靴)
三、代码及运行结果分析
练习一:
编辑
练习二:
编辑
练习三:
编辑编辑
四、心得体会
本次实验学习了Gluon基础语法,和线性回归的简洁实现,从而实现基于神经网络实现的手写数字识别,该实验相对复杂。通过本次实验,收获颇多,对神经网络有了进一步的学习与探究。