Python Deep Learning 简明教程
Libraries and Frameworks
在本章中,我们将把深度学习与不同的库和框架联系起来。
Deep learning and Theano
如果我们想要开始编码深度神经网络,最好对 Theano、TensorFlow、Keras、PyTorch 等不同框架的工作原理有所了解。
Theano 是 python 库,它提供了一组函数,用于构建深度网络,以便在我们的机器上快速训练。
Theano 是在加拿大蒙特利尔大学在深度网络先驱约书亚·本吉奥的领导下开发的。
Theano 让我们能够定义和评估带向量和矩阵的数学表达式,它们是数字的矩形数组。
从技术上讲,神经网络和输入数据都可以表示为矩阵,所有标准网络操作都可以重新定义为矩阵操作。这很重要,因为计算机可以非常快速地执行矩阵操作。
我们可以在并行处理多个矩阵值,如果我们构建具有这种底层结构的神经网络,我们可以使用带 GPU 的单台机器在合理的时间窗口内训练巨大的网络。
但是,如果我们使用 Theano,我们必须从头开始构建深度网络。该库不提供用于创建特定类型深度网络的完整功能。
相反,我们需要对深度网络的每方面进行编码,如模型、层、激活、训练方法和阻止过拟合的任何特殊方法。
但是,好消息是 Theano 允许在矢量化函数之上构建我们的实现,为我们提供高度优化的解决方案。
还有许多其他可扩展 Theano 功能的库。TensorFlow 和 Keras 作为后端与 Theano 配合使用。
Deep Learning with TensorFlow
谷歌 TensorFlow 是一个 Python 库。该库是构建商业级深度学习应用程序的不错选择。
TensorFlow 源于谷歌大脑项目的一部分 DistBelief V2 的另一个库。该库的目标是扩展机器学习的可移植性,以便将研究模型应用于商业级应用程序。
类似于 Theano 库,TensorFlow 基于计算图,节点表示持久数据或数学运算,边表示节点之间的数据流,这是多维数组或张量;因此得名 TensorFlow。
运算或一组运算的输出被作为输入送入下一个运算。
尽管 TensorFlow 是为神经网络设计的,但它也适用于其他可以将计算建模为数据流图的网络。
TensorFlow 还使用了 Theano 的几个特性,如通用和子表达式消除、自动微分、共享和符号变量。
可以使用 TensorFlow 构建不同类型的深度网络,如卷积网络、自动编码器、RNTN、RNN、RBM、DBM/MLP 等。
但是,TensorFlow 中不支持超参数配置。对于该功能,我们可以使用 Keras。