深度学习框架浅析

对于一个入门深度学习的人,不免会遇到深度学习框架选择的问题。就我而言,目前使用较多的深度学习框架有TensorFlowKerasPytorch这三种。这三种框各有其优缺点,其中使用TensorFlow的人最多。TensorFlow是谷歌研发的第二代人工智能学习系统,其命名来源于本身的运行原理。Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,TensorFlow为张量从流图的一端流动到另一端计算过程。TensorFlow是将复杂的数据结构传输至人工智能神经网中进行分析和处理过程的系统。TensorFlow搭建神经网络时,各种变量需要首先定义,并且各种变量需要放到Session里面才能运行。用TensorFlow搭建一个全连接训练网络,如下图所示。

图片

如上图所示,在该网络中,我们需要自定义权重、偏置和损失函数以及优化器,需要写出全连接的表达式,最后将数据放在Session中运行。TensorFlow优点是构建模型灵活,能够很好的理解各种网络输入输出变换关系和其原理。其缺点是使用困难,并且由于TensorFlow任何变量只能放在Session才能运行,因此该框架进行调试较为困难。

       Keras为一个比较上层深度学习框架,它用TensorFlow作为后端。它为一个二次开发软件,将TensorFlow的各种神经网络和变量封装起来,使用者可以比较简单的就搭建一个训练网络,不需要关心变量、损失函数和优化器的定义,其搭建的全连接训练网络如下图所示。

图片

Keras优点是搭建网络简单,不需要重复的造轮子。由于Keras比较上层,因此使用者很难了解到底层的原理,不适合初学者使用,对各种神经网络有一定了解之后使用较好,并且后端为TensorFlow,因此各种变量只能放到Session才能运行。

PytorchFacebook  AI 研究团队发布了一个 Python 工具包,专门针对 GPU 加速的深度神经网络编程。Torch 是一个经典的对多维矩阵数据进行操作的张量库,在机器学习和其他数学密集型应用有广泛应用。相较于TensorFlowKerasPyTorch最大优点是采用了动态计算图(dynamiccomputational graph)结构,并且相较于Keras,该框架没有那么上层。使用者可以像TensorFlow那样自己定义网络中的各种参数,如方法一所示。

图片

也可以直接使用搭建好的神经网络,如方法二所示。

图片

使用者可以通过自己搭建的网络理解其实现原理,为了方便也可以直接使用搭建好的网络。



猜你喜欢

转载自blog.51cto.com/15127585/2670718