1.4 实现工具

神经网络和深度学习的程序实现语言和框架很多,程序实现语言有Python、C++、Java、Go、R、MATLAB、BrainScript、Julia、Scala 和 Lua 等,框架有 TensorFlow、Caffe、CNTK、MXNet、Torch、Theano 和 Neon 等。其中,Python 语言由于其简洁性、易读性和可扩展性,已成为目前最受欢迎的深度学习程序设计语言;TensorFlow 由于其灵活性、高效性和可移植性,已成为目前最流行的一种深度学习框架。

1.4.1 Python

Python 语言是一种极具可读性和通用性的面向对象的编程语言,也是一种易读、易维护、广受欢迎、用途广泛的语言。

Python 是一种解释型的高级编程语言,简单明确,且具有很好的扩充性。我们既可以非常轻松地用其他语言编写模块供其调用,也可以用 Python 编写模块供其他语言通过各种方式轻松地调用。例如,底层复杂且对效率要求高的模块用C/C++等语言实现,顶层调用的API用Python 封装,这样可以通过简单的语法实现顶层逻辑,故而Python又被称为“胶水语言”。在如今的大部分深度学习框架中,要么官方接口就是Python,要么支持Python接口。

1.4.2 TensorFlow

TensorFlow 是 Google 基于 DistDelief 研发的第二代人工智能系统,是一个开源的机器学习库。它最初由 Google 大脑小组的研究员和工程师们开发,用于机器学习和深度神经网络方面的研究,如计算机视觉、语音识别、自然语言理解等,其主要特点是灵活、高效、可移植以及多语言支持等。

TensorFlow是一个采用数据流图(Data Flow Graph)、用于数值计算的开源软件库。“Tensor”(张量)意味着 N 维数组,“Flow”(流)意味着基于数据流图的计算。在图(Graph)这种数据结构中,包含两种基本元素:节点(Node)和边(Edge)。这两种元素在数据流图中有各自的作用。节点用来表示要进行的数学操作;而任何一种操作都有输入和输出,因此它也可以表示数据输入的起点和输出的终点。边表示节点与节点之间的输入输出关系,一种特殊类型的数据沿着这些边传递。这种特殊类型的数据,在 TensorFlow 中称之为 Tensor,即张量。所谓张量,通俗地说就是多维数组。当向数据流图中输入张量后,节点所代表的操作就会被分配到计算设备完成相关计算。