学堂在线《深度学习》实验课代码+报告(其中实验1和实验6有配套PPT),授课老师为胡晓林老师。课程链接:https://www.xuetangx.com/training/DP080910033751/619488?channel=i.area.manual_search。
持续更新中。
所有代码为作者所写,并非最后的“标准答案”,只有实验6被扣了1分,其余皆是满分。仓库链接:https://github.com/W-caner/DL_classs。 此外,欢迎关注我的CSDN:https://blog.csdn.net/Can__er?type=blog。
部分数据集由于过大无法上传,我会在博客中给出下载链接。如果对代码有疑问,有更好的思路等,也非常欢迎在评论区与我交流~
MNIST 手写数字识别数据集是图像分类领域最常用的数据集之一,它包含60,000 张训练图片,10,000 张测试图片,图片中的数字均被缩放到同一尺寸且置于图像中央,图片大小为 28×28。MNIST 数据集中的每个样本都是一个大小为784×1 的矩阵(从 28×28 转换得到)。MNIST 数据集中的数字包括 0 到 9 共 10类,如下图所示。
注意,任何关于测试集的信息都不该被引入训练过程。在本次案例中,我们将构建多层感知机来完成 MNIST 手写数字识别。

本次案例提供了若干初始代码,可基于初始代码完成案例,各文件简介如下:
(运行初始代码之前请自行安装 TensorFlow 2.0 及以上版本,仅用于处理数据集,禁止直接调用 TensorFlow 函数)
此外,在/criterion/和/layers/路径下使用模块化的思路定义了多个层,其中每个层均包含三个函数:__init__用来定义和初始化一些变量,forward 和 backward函数分别用来完成前向和后向计算:

其中
x
k
x_k
xk是输入向量
x
x
x中的第
k
k
k 个元素,
P
(
t
k
=
1
∣
x
)
P(t_k = 1|x)
P(tk=1∣x)表示该输入被分到第
k
k
k个类别的概率。由于 softmax 层的输出可以看成一组概率分布,我们可以计算 delta 似然及其对数形式,称为 Cross Entropy 误差函数:

其中

注意:此处的 softmax 损失层与案例 1 中有所差异,本次案例中的 softmax 层不包含可训练的参数,这些可训练的参数被独立成一个全连接层。
完成上述文件里的‘#TODO’部分(红色标记的文件),提交全部代码及一份案例报告,要求如下: