
2.6 深度学习框架简介
2.6.1 深度学习框架的优势
深度学习凭借着强大的功能和出色的表现吸引了大量程序员前来学习,对于学习者来说除了硬件(GPU)的基础环境外,与开发相关的软件资源也尤为重要。在这一浪潮下各大公司和高校纷纷开源了自己的深度学习框架,这些深度学习框架被应用于计算机视觉、语音识别、自然语言处理等领域,并获得了极好的效果。本节将首先为大家介绍深度学习框架的主要优势。
1.简化计算图的搭建
计算图(Computation Graph)可以看作一种描述函数的语言。图中的节点代表函数的输入,边代表这个函数的操作。计算图本质上是一个有向无环图,它可以被用于大部分基础表达式建模。
在深度学习框架中包含许多张量和基于张量的各种操作,随着操作种类的增多,多个操作之间的执行关系变得十分复杂。计算图可以更加精确地描述网络中的参数传播过程,自己编写代码来搭建计算图需要程序员学习大量的知识,并且会耗费很多时间,而深度学习框架可以帮助你很容易地搭建计算图。这是人们使用深度学习框架进行开发的一个重要原因。
2.简化偏导计算
深度学习框架的另一个好处是让求导计算变得更加简便。在深度学习的模型搭建过程中,不可避免地要计算损失函数,这就需要不停地做微分计算。有了深度学习框架,程序员不再需要自己反复编写微分计算的复杂代码。神经网络可以被视为由许多非线性过程组成的复杂函数体,而计算图则以模块化的方式完整表达了这一函数体的内部逻辑关系,因此对这一复杂函数体求模型梯度就变成了在计算图中简单地从输入到输出进行一次完整遍历的过程。相比传统的微分计算,这一方法大大简化了计算过程。自2012年后,绝大多数的深度学习框架都选择了基于计算图的声明式求解。用计算图求偏导过程如图2-14所示。
图2-14 用计算图求偏导
3.高效运行
深度学习框架的另一个重要的优势是具有灵活的移植性,可以将同一份代码几乎不经过修改地部署到GPU或CPU上,程序员不必将精力消耗在处理内存转移等问题上。目前对于大规模的深度学习来说,巨大的数据量使得单机很难在有限的时间内完成训练。这就需要使用集群分布式并行计算或使用多卡GPU计算,因此使用具有分布式性能的深度学习框架可以使模型训练更加高效。