TensorFlow+Keras 03 TensorFlow 与 Keras 介绍

1 TensorFlow 架构图

1.1 处理器

TensorFlow 可以在CPU、GPU、TPU中执行

1.2 平台

TensorFlow 具备跨平台能力,Windows 、Linux、Android、IOS、Raspberry Pi、云端执行

1.3 分布式执行引擎

TensorFlow Distributed Execution Engine 分布式执行引擎

在深度学习中,最花时间的就是模型的训练,尤其大型的深度学习模型必须使用大量数据进行训练,需要数天乃至数周之久,TensorFlow 具备分布式计算能力,可同时在数百台机器上执行训练模型,大幅度缩短模型训练的时间。

1.4 前端程序语言

TensorFlow 可以使用多种前端程序语言,如Python、C++等,但Python的支持效果最好。

1.5 高级API

TensorFlow 是比较低级的深度学习 API,所以用程序设计模型时必须自行设计,张量乘积、卷积等底层操作,此好处时我们可自行设计各种深度学习模型,缺点是开发时需要编写更多的程序代码。

网上开发社区以 TensorFlow 为底层开发很多高级的深度学习 API ,如 Keras、TF-Learn、TF-Slim、TF-Layer 等,其中 Keras 的功能

2 TensorFlow 简介

顾名思义,TensorFlow是由Tensor 和 Flow 组成的。

2.1 Tensor(张量)

在数学里,张量是一种几何实体或广义上的 “ 数量 ” ,在此 “ 数量 ” 包含 “ 标量、向量或矩阵 “ 。

  • 零维的张量是标量

           如 0.1

  • 一维的张量的向量

           如 [ 0.1  0.2  0.3 ]

  • 二维以上的张量是矩阵

          如 [ [ 0.1 0.2 0.3 ]

                 [ 0.4 0.5 0.6 ] ]

2.2 Flow(数据流)

所有的 TensorFlow 程序都是先建立 ” 计算图 “ (computational graph),这是张量运算和数据处理的流程。

我们可使用 TensorFlow 提供的模块以不同的程序设计语言建立 ” 计算图 " 。TensorFlow 提供的模块非常强大,我们可以设计张量运算流程,并构建深度学习或机器学习模型。

建立 “ 计算图 ” 完成后,我们就可以在不同的平台上执行 “ 计算图 ” 。

3 TensorFlow 程序设计模式

TensorFlow 程序设计模式的核心是 “ 计算图 ” ,可分为建立计算图和执行计算图两部分。

3.1 建立计算图

使用 TensorFlow 提供的模块建立计算图,设计张量运算流程,并构建各种深度学习或机器学习模型

3.2 执行计算图

建立计算图后,我们就可建立 Session 来执行计算图了。

在 TensorFlow 中, Session(愿意为会话)的作用是在客户端和执行设备间建立连接。有了该连接,就可以将计算图在各种不同设备中执行,后续任何与设备之间的数据传输都必须通过 Session 来进行,并且最后获得执行后的结果。

4 Keras 介绍

Keras 是一个开源码的高级深度学习程序库,使用 Python 编写,能够在 TensorFlow 或 Theano 之上。

4.1 为何使用 Keras

相对 TensorFlow 低级链接库而言,Keras 使用最少的程序代码、花费最小的时间就可建立深度学习模型,进行训练、评估准确率、并进行预测。

4.2 Keras 的工作方式

Keras 是一个模型级(model-level)的深度学习链接库,Keras只处理模型的建立、训练、预测等功能。

深度学习底层的运行,如张量的运算,Keras 必须配合 “ 后端引擎 " (backend engine)进行运算;目前 Keras 提供了 TensorFlow 和 Theano 两种后端引擎。

简而言之, Keras 程序员只需要专注于建立模型,底层操作细节(以张量运算为例)则由 Keras 转化为 Theano 或 TensorFlow 相应指令。

4.3 Keras 深度学习链接库特色

1 - 简单快速地建立原型prototyping : Keras 具备友好的用户界面、模块化设计、可扩充性

2 - 已经内建各种类神经网络层级,如卷积层 CNN、RNN,此可帮助我们快速建立神经网络模型。

3 - 通过后端引擎 Theano 与 TensorFlow,可在 CPU 与 GPU 上运行。

4 - 以Keras 开发的程序代码更简洁,可读性更高、更容易维护、更具有生产力。

5 - Keras的文件多、范例多、浅显易懂。

5 Keras 程序设计模式

实质上是利用 Keras 建立多层感知器(Multilayer Perceptron)。输入层 - 隐藏层 - 输出层;具体过程如下:

5.1 建立 Sequential 模型

Sequential 模型是多个神经网络的线性堆叠。

model = Sequential()

5.2 向模型中添加 ” 输入层 “ 与 ” 隐藏层  "

keras 已经内建各种神经网络层(如 Dense层、Conv2d层等),只要在之前建立的模型上加入我们选择的神经网络层即可。

model.add(Dense(units=256,
                input_dim=784,
                kernel_initializer='normal',
                activation='relu'))

5.3 向模型中添加 ” 输出层 “

model.add(Dense( units=10,
                 kernel_intializer='normal',
                 actiation='softmax'))

以上基本就完成了多层感知器模型的建立。

6 Keras 与 TensorFlow 比较

猜你喜欢

转载自www.cnblogs.com/gengyi/p/10652339.html