库和框架
在本章中,我们将深度学习与不同的库和框架联系起来。
深度学习和Theano
如果我们想开始编写深度神经网络代码,最好先了解Theano、TensorFlow、Keras、PyTorch等不同框架的工作原理。
Theano是一个Python库,它提供了一组函数来构建深度网络,这些网络可以在我们的机器上快速训练。
Theano是在加拿大蒙特利尔大学开发的,由深度网络先驱Yoshua Bengio领导。
Theano允许我们定义和评估具有向量和矩阵的数学表达式,向量和矩阵是数字的矩形数组。
从技术上讲,神经网络和输入数据都可以表示为矩阵,所有标准网络操作都可以重新定义为矩阵操作。这很重要,因为计算机可以非常快速地执行矩阵运算。
我们可以并行处理多个矩阵值,如果我们使用这种底层结构构建神经网络,则可以使用带有GPU的单台机器在合理的时间窗口内训练巨大的网络。
但是,如果我们使用Theano,则必须从头开始构建深度网络。该库没有提供创建特定类型深度网络的完整功能。
相反,我们必须编写深度网络的每个方面,例如模型、层、激活、训练方法以及任何用于停止过拟合的特殊方法。
然而,好消息是Theano允许在矢量化函数之上构建我们的实现,从而为我们提供了一个高度优化的解决方案。
还有许多其他库扩展了Theano的功能。TensorFlow和Keras可以用Theano作为后端。
使用TensorFlow进行深度学习
谷歌的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中实现神经网络,而无需更改任何代码。