在本章中,我们将深度学习与不同的图书馆和框架联系起来。
使用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码是可移植的; 可以在Keras中使用Theano或TensorFlow作为后端而不需要对代码进行任何更改来实现神经网络。