在过去的二十多年里出现了很多种 DNN 模型。每一种都称其拥有不同的「网络架构」,因为他们依据不同层级数量、滤波器形状(如过滤尺寸,滤波器和通道的数量)、层级类型以及连接方式而划分。正确地理解这些不同的方法和它们发展的趋势对于提高 DNN 引擎的效率至关重要。 其中包括: LeNet [9] 于 1989 年提出,是最早的 CNN 方式之一。其中最为人熟知的是第八版的 LeNet-5,其中包含两个卷积层和两个全连接层 [45]。 AlexNet[3] 是第一次赢得 ImageNet 挑战赛的 CNN 网络(2012 年)。它由五个卷积层和三个全连接层组成。 Overfeat [46] 与 AlexNet 具有非常相似的架构:五个卷积层和三个全连接层。 VGG-16 [47] 更进一步,atv,使用了 16 层的深度神经网络,其中包含 13 个卷积层,3 个全连接层。 GoogLeNet[48] 更深,有 22 个层,它首次引入了起始模块(见下图)。 ResNet [11],即残差网络(Residual Net),使用残差连接可以让层级更加深入(34 层以上)。该网络第一次让 DNN 在 ImageNet 挑战赛中的表现超过了人类,top-5 错误率在 5% 以下。 图 11:GoogleNet[48] 的起始模块(Inception module)通道长度实例,其中每个 CONV 层在 ReLU 层之后(图中未显示)。 图 12:ResNet[11] 中的快捷模块。其中最后一个 CONV 层之后的 ReLU 层被快捷连接。 表 2:目前流行的 DNN [3, 11, 45, 47, 48] 模型,其中正确率都基于在 ImageNet [10] 中 TOP-5 误差。 IV. DNN 开发资源 DNN 得以快速发展的一个关键因素是研究社区与产业界使得一系列开发资源变得可用。这些资源对 DNN 加速器的开发也很关键,提供工作负载的特性、在模型复杂性和准确率上促进权衡性的探索。这一章节将描述了对此领域感兴趣的人能快速上手的一些资源。 A. 框架(Frameworks) 为了 DNN 开发的简便以及让训练网络可共享,不同的团队开发出了不同的深度学习框架。这些开源库包含了面向 DNN 的软件库。Caffe 在 2014 年由 UC 伯克利大学开源,它支持 C、C++、Python 和 MATLAB。TensorFlow 由谷歌团队 2015 年开源,支持 C++和 Python,也支持多 CPU 和 GPU。它要比 Caffe 更灵活,计算表达是数据流图到张量管理(多维度阵列)。另一个流行的框架是 Torch,由 Facebook 和 NYU 开发,它支持 C、C++和 Lua。当然,还有其他的一些框架,比如 Theano、MXNet、CNTK,这在 [57] 中有所描述。 这些框架的存在不只是方便了 DNN 研究人员和应用设计者,它们对编程高性能或更高效的 DNN 计算引擎也是无价的。例如,大部分框架可以使用英伟达的 cuDNN 库在 GPU 上进行快速运算。这一加速对框架的使用者而言是很明显的。类似地,硬件加速器这种如此易懂的结合也能在 Eyeriss 这样的芯片上获得 [58]。 最终,这些框架对硬件研究人员来说也是无价的资源(工作负载),它们可被用于设计不同工作负载的实验、性能分析(profiling)不同的工作负载、探索硬件与软件之间的权衡。 B. 模型(Model) C. 流行的分类数据集 在许多公开的数据集中有许多人工智能任务可用来评估 DNN 的准确率。公开数据集对对比不同方法的准确率而言非常的重要。最简单也最常见的任务是图像分类。图像分类涉及到在给定的完整图像中,选择出 N 类物体中的 1 类,它不需要进行定位于检测。 其中包括: MNIST:它包含手写数字的 28×28 像素的灰度图像,里面有 10 大类别(10 个数字)、6 万张训练图像和 1 万张测试图像。 CIFAR:这是一个包含不同物体 32×32 像素的彩色图像数据集。 ImageNet:它包含的图像是 256×256 彩色像素,有 1000 多类。 (责任编辑:本港台直播) |