Python深度学习 库和框架


在本章中,我们将把深度学习与不同的库和框架联系起来。

深度学习和 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 中实现神经网络,而无需更改任何代码。