神经网络设计与实现
上QQ阅读APP看书,第一时间看更新

1.3 配置环境

创建ML软件时,只有少数编程语言可用。最受欢迎的是Python和R,不过Scala也很受欢迎。此外,还有其他一些语言可用,但是更适合ML的编程语言是Julia、JavaScript和Java。在本书中,我们仅使用Python,因为其适用范围广泛、用法简单且库的生态系统较为丰富。

具体来说,我们将使用Python 3.7及以下一些库:

·numpy:用于快速向量化数值计算

·scipy:构建在numpy之上,具有许多数学功能

·pandas:用于数据操作

·scikit-learn:Python主要的ML库

·tensorflow:为我们的深度学习算法赋能的引擎

·keras:我们将用于开发深度学习算法的库,构建在TensorFlow之上

我们集中讨论最后两个库。如今,有一些库很适用于神经网络(Neural Network,NN)。最常用的是TensorFlow。它是一个符号数学库,使用有向图对操作之间的数据流进行建模。

TensorFlow特别适用于矩阵乘法,因为它可以利用GPU架构的全部功能,GPU架构由许多不是特别强大的内核组成,这些内核可以并行执行许多操作。TensorFlow功能多样,可以在几种不同的平台上运行,也可以使用TensorFlow Lite在移动设备上或使用TensorFlow.js(https://www.tensorflow.org/js)在浏览器上运行模型。

本书的大部分内容使用的库之一就是Keras。它是一个位于TensorFlow等库之上的层,可为终端用户提供更抽象的接口。因为Keras专注于神经网络,所以其适用范围比TensorFlow要窄,但它可以与TensorFlow的替代产品(如Microsoft Cognitive Toolkit)结合使用,所以也更通用。

现在,这些库不保证向后兼容。因此,使用Python时,在虚拟环境中工作是一个好习惯。这使我们能够隔绝正在处理的不同项目,而且还可以轻松地将我们的设置分发到不同的计算机上,避免了兼容性问题。

我们可以通过几种方法来创建虚拟环境。在本书中将介绍以下内容:

·虚拟环境

·Anaconda

·Docker

我们将逐一介绍它们的工作原理,并说明其优缺点。