banner
Hi my new friend!

AIComputingSystem-手写数字识别

Scroll down

AIComputingSystem-手写数字识别

实验2.1 基于三层神经网络实现手写数字分类

1.介绍一下“手写数字分类任务”和本实验中使用的数据集。

本实验采用的数据集为 MNIST 手写数字库。

MNIST数据集是从NIST的两个手写数字数据集:Special Database 3 和Special Database 1中分别取出部分图像,并经过一些图像处理后得到的。

MNIST数据集共有70000张图像,其中训练集60000张,测试集10000张。所有图像都是28×28的灰度图像,每张图像包含一个手写数字。

该数据集中的图像数据和标记数据采用IDX格式的文件存放。图像的像素值按行优先顺序存放,取值范围为[0, 255],其中0表示黑色,255表示白色。

2.本实验的神经网络都包含哪些层?各个层的功能是什么?

全连接层:将输入数据与每个神经元之间建立全连接关系,每个神经元都与前一层的所有神经元相连,并通过学习可调节的权重来进行信息传递和转换。

ReLU激活函数层:对输入信号进行非线性变换,通过将负值设为零来去除负值部分并保留正值部分,可以有效地解决梯度消失问题。

softmax损失层:将神经网络的输出转化为概率分布。

3.网络的训练(training)过程和网络的推理(inference)过程有什么区别?

在训练过程中,网络的目标是通过输入数据和对应的标签之间的比较来学习和调整参数,以最小化预定义的损失函数。而在推理过程中,网络的目标是根据给定的输入数据,生成相应的输出结果。

在训练过程中,通常会使用训练数据集,其中包含输入数据和对应的标签。网络通过反向传播算法和优化算法来更新参数,以逐步提高在训练数据上的性能。而在推理过程中,使用的是新的、未知的输入数据,网络根据已经学习到的参数对这些数据进行预测或分类。

在训练过程中,网络的参数会通过反向传播和优化算法进行更新,以最小化损失函数。而在推理过程中,网络的参数是固定的,不再进行更新,保持训练阶段学习到的状态。

训练过程通常需要更大的计算量和时间,因为其涉及到反向传播、梯度计算和参数更新等复杂操作。推理过程只需要前向传播,通常速度更快。

4.参数和超参数的区别是什么?本实验中都使用了哪些超参数?

参数:模型内部的可学习变量,用于表示模型的权重和偏置。其值通过训练过程中的优化算法来自动调整,以使得模型能够适应训练数据。参数是模型直接从数据中学习得到的,其值可以根据训练数据的特征和目标进行调整,以最小化损失函数。参数通常由模型的层定义,并且在训练过程中通过反向传播算法来更新。

超参数:在训练模型之前设置的配置参数,用于控制模型的学习过程和性能。

超参数不是通过模型训练过程自动学习得到的,而是由开发者在训练之前手动选择或调整的。超参数的值对模型的性能和训练过程具有重要影响,如学习率、批次大小、网络层数、神经元数量等。

本实验中的超参数:
batch_size:批次大小。它指定了每个训练批次中包含的样本数量。input_size:输入大小。它表示输入数据的特征维度或输入向量的长度。

hidden1:第一个隐藏层的神经元数量。

hidden2:第二个隐藏层的神经元数量。

out_classes:输出类别数量。它表示模型要预测的类别数量,例如在分类问题中的类别数目。

lr:学习率。它决定了在每次参数更新中,参数沿着梯度方向更新的步长大小。

max_epoch:最大训练轮数。它指定了训练过程中的最大迭代次数或轮数。

print_iter:打印间隔。它表示每隔多少个迭代或批次,打印一次训练状态或结果。

5.什么是正则化?有哪些正则化技术?

正则化:一种用于减少机器学习模型过拟合的技术。正则化通过在模型的损失函数中引入额外的惩罚项,以限制模型参数的大小或复杂性,从而提高模型的泛化能力。

L1正则化: L1正则化通过在损失函数中添加模型参数的绝对值之和作为惩罚项。它倾向于产生稀疏的参数向量,即将一些参数设置为零,从而实现特征选择和降维的效果。

L2正则化: L2正则化通过在损失函数中添加模型参数的平方和的一半作为惩罚项。它倾向于使参数的值较小,并且不会将参数完全设置为零,从而保留了所有特征。

ElasticNet正则化: ElasticNet正则化是L1正则化和L2正则化的组合,通过在损失函数中同时添加L1和L2的惩罚项。它可以克服L1正则化在某些情况下选择过多特征的问题,并结合了L1和L2的优点。

Dropout正则化: Dropout正则化是一种在神经网络中应用的正则化方法。它在训练过程中随机地将一部分神经元的输出设置为零,从而强制模型在没有某些神经元的情况下进行训练。这有助于减少神经网络对于特定神经元的依赖性,提高模型的鲁棒性和泛化能力。

数据增强(Data Augmentation): 数据增强是一种通过对训练数据进行随机变换来扩充数据集的技术。通过应用随机旋转、平移、缩放、翻转等变换,可以生成更多的训练样本,降低模型对于训练数据的过拟合风险。

实验2.2 基于 DLP 平台实现手写数字分类

1.什么是量化?量化会带来什么好处/坏处?

量化:对神经网络中的权重或偏置等参数用低精度的数据表示。

好处:

1.通过量化,可以大幅减少模型的存储需求,从而更容易在资源受限的设备上部署和使用深度学习模型。

2.量化可以减少模型的计算开销,包括内存带宽和乘法操作的数量,从而加速模型的推理速度。

3.由于量化可以减少乘法操作和数据传输,因此可以降低模型的能耗,使得在功耗敏感的环境中更加高效。

坏处:

1.量化可能导致模型精度的小幅下降,特别是当量化位数较低时。低精度表示可能无法准确表示模型的复杂特征,从而影响模型性能。

2.对于量化模型,训练和调优过程可能更加复杂,因为需要考虑量化的影响,并使用特定的量化训练技术和算法。

2.pycnml、CNML库以及DLP之间的关系是什么?

  • pycnml 是一个 Python 库,是一个用于编写和执行深度学习模型的库。
  • CNML库提供了一组底层函数和指令,用于在 Cambricon 系列芯片上优化和执行深度学习模型。CNML 库可以与 pycnml 结合使用,用于在寒武纪处理器上部署和执行深度学习模型。
  • DLP是深度学习处理器平台,可为pycnml与CNML的运行提供硬件环境。

3.使用DLP相对于CPU有哪些优势和劣势?

优势:

  1. DLP专门设计用于深度学习任务,具有高度优化的硬件架构和指令集,可以实现高效的并行计算。相对于CPU,DLP可以同时处理多个计算任务,并且在深度学习模型的推理和训练过程中提供更高的性能。
  2. DLP通常采用专门的硬件设计和优化,以在相同的计算任务下提供更高的能效。由于深度学习任务的计算密集性质,使用DLP可以显著降低功耗,提高能源效率。
  3. DLP的硬件架构和指令集针对深度学习任务进行了优化,可以实现快速的矩阵乘法、卷积操作和激活函数计算等。这些优化可以加速深度学习模型的训练和推理过程,提高效率。

劣势:

  1. 相对于CPU而言,DLP的计算能力更专注于深度学习任务,但在通用计算方面的能力较弱。如果需要进行广泛的计算任务,CPU可能更适合,因为它具有更广泛的应用领域和通用计算能力。
  2. 由于DLP是专门设计的硬件加速器,其软件和工具支持可能较为有限。使用DLP可能需要适配和优化深度学习框架、库和算法,以使其与特定的DLP平台兼容。
其他文章
cover
DocumentAI
  • 24/07/16
  • 23:32
  • 2.2k
  • 13