深度学习作为机器学习的一个子集,近年来在人工智能领域取得了巨大的进展。它利用大数据集、高度并行的处理能力以及构建越来越智能的设备的需求,通过模拟数据中的高级抽象来实现。如图1所示,机器学习本身是人工智能的一个子集,人工智能是计算机系统尝试模仿人类智能的广泛研究领域。
Intel通过优化流行的框架如Caffe*和Theano*,充分利用Intel®架构(IA),创建了如Intel®深度学习SDK等高级工具,为数据科学家提供便利,并为开发者社区提供了如Intel®数据分析加速库(Intel® DAAL)和Intel®深度神经网络数学核心库(Intel® MKL-DNN)等软件库。
Intel MKL-DNN是一个开源的性能增强库,用于在IA上加速深度学习框架。如图2所示,它包括用于实现卷积神经网络的高向量化和线程化构建块,提供C和C++接口。
Intel MKL-DNN操作的主要对象类型包括:原语(Primitive)、引擎(Engine)和流(Stream)。这些对象在库文档中定义如下:
典型的工作流程是创建一组原语,将它们推送到流中进行处理,然后等待完成。有关编程模型的更多信息,请参考Intel MKL-DNN文档。
网络上有许多有用的资源描述了Intel MKL-DNN是什么,不是什么,以及开发者通过将库集成到他们的深度学习项目中可以期望实现什么。
Intel MKL-DNN是一个开源库,可以在GitHub上免费下载,它被描述为一个性能库,用于深度学习应用,包括实现卷积神经网络的构建块,提供C和C++接口。
本节详细说明在GitHub仓库网站上提供的安装信息,提供详细的、分步骤的安装和构建Intel MKL-DNN库组件的说明。
Intel MKL-DNN有以下依赖:
sudo apt install cmake
sudo apt install doxygen
通过打开终端并输入以下命令,从GitHub仓库克隆Intel MKL-DNN库:
git clone https://github.com/01org/mkl-dnn.git
要验证构建,请执行以下命令:
make test
Intel MKL-DNN的文档可以在线获取。也可以通过在mkl-dnn/build目录下执行以下命令在本地系统上生成:
make doc
通过执行以下命令完成Intel MKL-DNN的安装:
sudo make install
GitHub仓库包含C和C++代码示例,演示如何构建一个由卷积、修正线性单元、局部响应归一化和池化组成的神经网络拓扑块。
本节描述了如何在Linux中从命令行构建这些代码示例。
要构建包含在Intel MKL-DNN仓库中的C++示例程序(simple_net.cpp),请首先转到examples目录:
cd ~/mkl-dnn/examples
mkdir –p bin
g++ -std=c++11 simple_net.cpp –lmkldnn –o bin/simple_net_cpp
cd ~/mkl-dnn/examples
mkdir –p bin
gcc –Wall –o bin/simple_net_c simple_net.c -lmkldnn