论文部分内容阅读
作为机器学习领域的一个热门分支,深度神经网络已经在计算机视觉、智能搜索、无人驾驶、模式识别等领域取得了令人瞩目的成就,而且随着深度学习的广泛应用在未来依旧会保持着快速地发展。近些年来,随着深度学习的模型的结构越来越复杂,一般的编程手段已经不能满足需求。开发人员会在朴素的编程方法上耗费大量时间来实现底层的算法,这就在研究中花掉了不必要时间。很多企业和科研机构都希望能有更快速和高效的深度学习开发方式,在这个背景下出现了Caffe、Tensor Flow、Torch等众多深度学习框架。这些深度学习框架不但可以自动完成繁琐的符号运算、GPU加速底层操作,还提供了粒度更高的模块甚至模型可以直接使用。使得为研究者和工业界提供了便捷,高效的开发模式。很多深度学习框架提供了一些常用的深度学习模型,开发者可以直接在现有的神经网络模型上进一步修改或研究。本文对深度学习框架进行了以下探索与实践:首先,本文对深度学习和神经网络在不同领域中的发展现状做了简单介绍,并详细阐述述了几个主流的深度学习框架和深度学习框架最常用的加速技术CUDA。之后,介绍了感知器和全连接神经网络的构成,并叙述了卷积神经网络的主要特性和算法。本文设计并实现了一个简单的深度学习框架scnn。scnn是一种以层为单位描述神经网络的框架。它的基本数据类型是matrix。matrix以张量的形式保存神经网络中的数据和导数信息。layer是scnn的基本计算单元,一个layer既可以是神经网络中的一个层也可以是矩阵乘法等数学运算。scnn通过逐个添加layer的方式构造神经网络。多个layer构成的完整网络模型用NET来表示。一个NET可以进行神经网络初始化、读取数据、训练、预测等常用操作。本文先介绍了scnn的总体设计思路。分别叙述了matrix、layer、NET三个基本模块的设计与实现。除此之外还设计了加速网络训练速度的GPU并行模块。其中着重介绍了卷积层convol Layer和池化层poolinglayer中的算法与设计和CUDA编程技术的并行方式和全连接层的并行优化。最后,本文使用scnn框架搭建的两个神经网络分别进行了算法测试和并行模块的加速测试。实验包括两部分:1、功能测试:由scnn建立了一个包含两个卷积层和两个池化层的卷积神经网络,使用修改过的MNIST数据集进行训练,并在预测中达到了96%以上的准确率。2、并行效率测试:在自己创建的数据集上测试了scnn建立的3层全连接神经网络来测试GPU并行化后的模块,在网络的训练速度上相比CPU版本达到了5倍以上的加速比,而且有着同样的精度。实验结果表明,scnn可以实现CNN和DNN模型并有可以接受的GPU加速能力。虽然scnn相比市面上的深度学习框架显得很简陋,但也具备深度学习框架的大多数特性,基本达到了设计的预期。