TensorFlow深度学习框架 | 青训营

116 阅读3分钟

TensorFlow是目前最流行的深度学习框架。本章首先简要介绍已有的深度学习框架及TensorFlow框架,让读者了解TensorFlow是什么。然后通过介绍如何安装TensorFlow,并使用JupterLab完成HelloWorld程序的编写和执行,以熟悉TensorFlow的编程环境。接下来介绍TensorFlow的基础知识,包括张量、激活函数、层等,这些是理解TensorFlow程序的基础。最后通过一个人工神经网络中的经典案例:手写数字识别,完整演示数据集处理、创建模型、训练模型、模型评估、预测等步骤,让读者对如何使用TensorFlow进行深度学习应用的开发有初步的了解。

1.1.1   深度学习框架介绍

随着机器学习理论和技术的发展,涌现出很多机器学习计算框架,例如:scikit-learn、Keras、TensorFlow、Pytorch及百度的PaddlePaddle等。虽然深度学习的框架很多,但是其背后的理论是相通的,训练模型的基本步骤也类似。只要读者弄清楚基本的理论和一个框架的使用方法,其它的框架使用也是类似的。下面我们首先介绍下这些框架。

scikit-learn专注于传统的机器学习算法,对常用的机器学习算法进行了封装,包括回归、分类、聚类等方法。

Keras 是一个用 Python 编写的高级神经网络 API,它能够以 TensorFlow, CNTK, 或者 Theano 作为后端运行。

TensorFlow是谷歌推出的深度学习框架,是一个端到端开源机器学习平台。借助 TensorFlow,初学者和专家可以轻松创建适用于桌面、移动、网络和云端环境的机器学习模型。TensorFlow作为后端框架,提供张量运算、微分运算等低层次的运算。Keras作为前端框架,提供了模型级的API。TensorFlow是目前最流行的深度学习框架,本书主要介绍此框架的基础知识和使用。

Pytorch也是一个端到端开源机器学习框架。和TensorFlow相比,Pytorch在学术届广泛使用,而TensorFlow在工业界广泛使用。

PaddlePaddle(飞桨)以百度的深度学习技术研究和业务应用为基础,是中国首个自主研发、功能完备、 开源开放的产业级深度学习平台,集深度学习核心训练和推理框架、基础模型库、端到端开发套件和丰富的工具组件于一体

1.1.2   TensorFlow系统架构

TensorFlow主要有1.x和2.x两个大版本,两者最大的区别是1.x使用静态图框架,2.x使用动态图框架。在静态图框架中,程序编译执行时先生成神经网络的结构,再执行相应操作,速度快但难以调试。而动态图框架,程序按照命令的顺序进行执行,容易调试。TensorFlow架构[6]如下图所示。

(1)    C API把TensorFlow分割为前端和后端,前端(Python/C++/Java Client)基于C API触发TensorFlow后端程序运行。Training libraries和Inference libs是模型训练和推导的库函数,为用户开发应用模型使用。

(2)    Distributed Master将用户的请求转换为一系列任务的执行。给定一个计算图和操作定义后,它将计算图分解为子图,不同的子图分片运行在不同的设备上。

(3)    Dataflow Executor处于各个任务中,它接收Master发过来的请求,调度执行子图操作。

(4)    Kernel为TensorFlow中算法操作的具体实现,如卷积操作,激活操作等。

(5)    RPC和RDMA为网络层,主要负责传递神经网络算法参数。

(6)    CPU和GPU为设备层,主要负责神经网络算法中具体的运算操作。

image.png 图 7-1 TensorFlow架构