图书馆和框架(Libraries and Frameworks)
在本章中,我们将深度学习与不同的库和框架联系起来。
深度学习和Theano
如果我们想要开始编码深度神经网络,我们最好知道不同的框架如Theano,TensorFlow,Keras,PyTorch等是如何工作的。
Theano是python库,它提供了一系列功能,用于构建可在我们的机器上快速训练的深网。
Theano是在加拿大蒙特利尔大学开发的,由Yoshua Bengio领导,是一个深厚的网络先驱。
Theano让我们用矢量和矩阵定义和评估数学表达式,这些矩阵是矩形数组。
从技术上讲,神经网络和输入数据都可以表示为矩阵,所有标准网络操作都可以重新定义为矩阵运算。 这很重要,因为计算机可以非常快速地执行矩阵运算。
我们可以并行处理多个矩阵值,如果我们构建一个具有这种底层结构的神经网络,我们可以使用一台带有GPU的机器在合理的时间窗口内训练大量的网络。
但是,如果我们使用Theano,我们必须从头开始构建深网。 该库不提供用于创建特定类型的深网的完整功能。
相反,我们必须编码深层网的每个方面,如模型,图层,激活,训练方法和任何特殊方法来停止过度拟合。
然而,好消息是Theano允许在矢量化功能的顶部构建我们的实现,为我们提供高度优化的解决方案。
还有许多其他库扩展了Theano的功能。 TensorFlow和Keras可以与Theano一起用作后端。
使用TensorFlow进行深度学习
Googles TensorFlow是一个python库。 该库是构建商业级深度学习应用程序的绝佳选择。
TensorFlow来自另一个图书馆DistBelief V2,它是Google Brain Project的一部分。 该库旨在扩展机器学习的可移植性,以便研究模型可以应用于商业级应用程序。
与Theano库非常相似,TensorFlow基于计算图,其中节点表示持久数据或数学运算,边表示节点之间的数据流,这是一个多维数组或张量; 因此称为TensorFlow
来自一个操作或一组操作的输出作为输入馈送到下一个操作。
尽管TensorFlow是为神经网络设计的,但它适用于其他网络,其中计算可以建模为数据流图。
TensorFlow还使用了Theano的一些功能,例如常见和子表达式消除,自动区分,共享和符号变量。
可以使用TensorFlow构建不同类型的深网,如卷积网,自动编码器,RNTN,RNN,RBM,DBM/MLP等。
但是,TensorFlow中不支持超参数配置。对于此功能,我们可以使用Keras。
与Keras深度学习
Keras是一个功能强大且易于使用的Python库,用于开发和评估深度学习模型。
它采用简约设计,允许我们逐层构建网络; 训练它,并运行它。
它包含了高效的数值计算库Theano和TensorFlow,并允许我们在几行代码中定义和训练神经网络模型。
它是一个高级神经网络API,有助于广泛使用深度学习和人工智能。 它运行在许多较低级别的库之上,包括TensorFlow,Theano等。 Keras代码是便携式的; 我们可以使用Theano或TensorFlow在Keras中实现神经网络作为后端而不需要对代码进行任何更改。