《智能系统与技术丛书 深度学习实战 基于TensorFlow2和Keras 原书第2版》(意)安东尼奥·古利,(印)阿米塔·卡普尔,(美)苏吉特·帕尔作;刘尚峰,刘冰译|(epub+azw3+mobi+pdf)电子书下载

图书名称:《智能系统与技术丛书 深度学习实战 基于TensorFlow2和Keras 原书第2版》

【作 者】(意)安东尼奥·古利,(印)阿米塔·卡普尔,(美)苏吉特·帕尔作;刘尚峰,刘冰译
【丛书名】智能系统与技术丛书
【页 数】 458
【出版社】 北京:机械工业出版社 , 2021.08
【ISBN号】978-7-111-68771-9
【价 格】149.00
【参考文献】 (意)安东尼奥·古利,(印)阿米塔·卡普尔,(美)苏吉特·帕尔作;刘尚峰,刘冰译. 智能系统与技术丛书 深度学习实战 基于TensorFlow2和Keras 原书第2版. 北京:机械工业出版社, 2021.08.

图书封面:

图书目录:

《智能系统与技术丛书 深度学习实战 基于TensorFlow2和Keras 原书第2版》内容提要:

本书围绕TensorFlow和Keras讲解神经网络和深度学习技术。在这个强大、受欢迎、可扩展的机器学习技术栈中,你将学习如何编写深度学习应用。TensorFlow是专业级应用选用的机器学习库,而Keras提供了一个简单且强大的PythonAPI来访问TensorFlow。TensorFlow2提供了完整的集成Keras,使高阶机器学习比以往任何时候都更加轻松便捷。本书还介绍了基于TensorFlow的神经网络,贯穿了主要的应用(回归、CNN、GAN、RNN、NLP),还涵盖了两个可用的示例应用,并深入探讨了生产环境下的TF、TFMobile,以及TensorFlow与AutoML的结合使用。

《智能系统与技术丛书 深度学习实战 基于TensorFlow2和Keras 原书第2版》内容试读

CHAPTER I

第1章

基于Tensor Flow2.0的神经网络基础

本章我们将学习TernsorFlow的基本内容,它是Google开发的用于机器学习和深度学习的开源框架。另外,我们也会介绍一些神经网络和深度学习的基础概念,近年来这两个机器学习领域取得了难以置信的寒武纪式增长。通过学习本章,希望你能了解动手实践深度学习所需的所有工具。

1.1 TensorFlow是什么

TensorFlow(TF)是一个功能强大的开源软件库,它由Google的布莱恩(Brain)团队开发,主要用于深度神经网络。它自2015年11月使用Apache2.0开源协议首次发布后飞速发展,截至2019年5月,它在Github的项目仓库(https://github.com/tensorf1ow/tensorf1ow)上已经有超过51000条提交,大约1830个贡献者。这些数据说明了它自身的流行度。

我们先来看看TensorFlow到底是什么,以及它为何在众多深度神经网络研究人员和工程师中如此流行。Google©称它为“机器智能的开源软件库”,但随着很多深度学习库的出现,

PyTorch (https://pytorch.org/),Caffe (https://caffe.berkeleyvision.org/)和MxNet(https://mxnet.apache.org/),是什么使得TensorFlow仍然与众不同呢?大多数深度学习库(如TensorFlow)都有自动求导工具(一种用于优化的数学工具),

许多是开源平台,其中大多数提供CPU/GPU选项,有预训练模型,支持常用的神经网络架

构(比如循环神经网络、卷积神经网络和深度信念网络)。

⊙寒武纪生命大爆发是地球生命进化史上的一大奇观,这里指神经网络和深度学习的发展速度非常之快。一

编辑注

2

第1章

除此之外,TensorFlow还有以下重要的功能:

口它适用于所有流行的编程语言,比如,Python、C++、Java、R和Go。

口Keras作为高阶神经网络API集成到了TensorFlow中(自2.0开始,Keras成为与

TensorFlow交互的标准API)。该API指定了软件组件间的交互方式。▣TensorFlow允许部署模型且易于在生产中使用。

口TensorFlow2.0在基于静态图的图计算基础上,增加了动态计算(见第2章)。口最重要的是,TensorFlow拥有非常好的社区支持。

对于所有开源项目,Github上的五角星数量是衡量其流行度的重要途径(见图1-1)。截至2019年3月,TensorFlow、Keras和PyTorch的星数分别为123000、39100和25800。可见,

TensorFlow成了机器学习中最受欢迎的框架。

tensorflow/tensorflow

●C++

★123k

An Open Source Machine Learning Framework for

Everyone

keras-team/keras

●Python

★39.1k

Deep Learning for humans

pytorch/pytorch

★25,8k

Tensors and Dynamic neural networks in Python with strong GPU accnleration

图1-1 Github上各种深度学习项目的星数

Google Trends(趋势)是另一种衡量流行度的途径,结果再次证明TensorFlow和Keras分列一二位(截至2019年底),而PyTorch紧随其后(见图1-2)。

Google Trends

Compare

<▣

Relond this page

●tensorfow

●cntk

◆pytorch

●mnet

●keras

Searchterm

Search term

Search term

Search term

Search term

United States学

1/1/n5-3/15/19

All categories

Web Search

interest over time②

±)<

图1-2各种深度学习项目的Google Trends

基于TensorFlow2.0的神经网络基础3

1.2Keras是什么

Keras是一个设计优美的API,它组合了各类用于建立和训练深度学习模型的构建模块。Keras可以集成到很多不同的深度学习引擎中,包括Google TensorFlow、MicrosoftCNTK、Amazon MxNet和Theano。从TensorFlow2.0开始,Keras被采用为标准高阶API,大幅简化了编码,并使编程更为直观。

1.3 TensorFlow2.0有哪些重要的改动

TensorFlow2.0包含大量的改动。Keras现在已经是TensorFlow的一部分。tf.keras是TensorFlow对Keras的具体实现,使用它替换掉Keras,可以更好地与其他TensorFlowAPI(比如动态图tf.data)集成,还有很多其他好处。这点我们将在第2章中详细讨论。

TensorFlow可以使用pip安装。

更多TensorFlow安装选项可参考https://www.tensorflow.org/instal1a

支持CPU版本:

pip install tensorflow

支持GPU版本:

pip install tensorflow-gpu

为了理解TensorFlow2.0有哪些新特性,首先可以看一看在TensorFlow 1.0中编写神经网络的传统方法:

import tensorflow.compat.vl as tf

in_a tf.placeholder(dtype=tf.float32,shape=(2))

def model(x):

with tf.variable_scope("matmul"):

W=tf.get_variable("W",initializer=tf.ones(shape=(2,2)))b tf.get_variable("b",initializer=tf.zeros(shape=(2)))return x W b

out_a model(in a)

with tf.Session()as sess:

sess.run(tf.global_variables initializer())outs sess.run([out a],

feed dict=(in a:[1,0]))

下面安装TensorFlow2.0。

⊙此处指TensorFlow1.x的安装。一译者注

4

第1章

支持CPU版本:

pip install tensorflow==2.0.0-alpha0

支持GPU版本:

pip install tensorflow-gpu==2.0.0-alpha0

在TensorFlow2.0中编写神经网络的代码实现如下所示:

import tensorflow as tf

W tf.Variable(tf.ones (shape=(2,2)),name="W")b tf.Variable(tf.zeros(shape=(2)),name="b")

@tf.functiondef model(x):

return W x bouta=model([1,0])

print(outa】

很明显,代码更加简洁美观。事实上,TensorFlow2.0的核心思想是使TensorFlow更易学易用。若你直接开始学习TensorFlow2.0,则你是幸运的。如果你已经很熟悉1x,那么就需要理解两者间的不同点,同时,你可能还需要借助一些自动化迁移工具来重写代码,这一点将会在第2章中讨论。现在,我们先介绍TensorFlow支持的最强大的学习范式之一:神经网络。

1.4神经网络概述

人工神经网络(Artificial Neural Network,ANN)表示一类机器学习模型,其灵感来自对哺乳动物中枢神经系统的研究。单个人工神经网络由多个互联的“神经元”组成,组织形式为“层”。某一层的神经元会将消息传递到其下一层神经元(术语为“发射”),这即是神经网络的运行方式。始于20世纪50年代初的早期研究提出了一种可进行简单运算的双层网络—“感知器”。随后,20世纪60年代末期进一步扩大了研究成果,提出了“反向传播”算法2,),可用于更为高效的多层网络训练

必一些研究认为,这些技术的根源可以追溯到更为久远的年代内。

截至20世纪80年代,神经网络一直是学术热点之一,之后,其他一些更简单的实现方法受到了更多的重视。到了21世纪第一个十年的中期,人们重新唤起了对神经网络的兴趣,这主要得益于三个因素:G.Hinton提出了一种突破性的快速学习算法35-6;2011年前

后提出了将GPU用于大规模数值计算:大量可供训练的可用数据集

这些改进措施为现代“深度学习”开辟了道路,它是一类神经元层数非常大的神经网络,并能够基于渐进式抽象层学习一些相当复杂的模型。几年前,人们起初会将一些使用了3~5层的神经元层数称为“深层”,而如今,200层以上的网络已经司空见惯!

基于渐进式抽象的学习方式与人类大脑中进化了数百万年的视觉模型很类似。事实上

基于TensorFlow2.0的神经网络基础5

人类视觉系统就是由不同的层组合而成的。比如,我们的眼睛首先连接到称为视觉皮层

(V1)的大脑区域(位于大脑后下部),该区域在许多哺乳动物中很常见,主要用于区分物体

的基本属性,例如视觉方向、空间频率和颜色等方面的微小变化。

据估计,V1视觉皮层由大约1.4亿个神经元组成,它们之间有数百亿个连接。进而,

V1会连接到其他区域(V2、V3、V4、V5和V6),逐渐进行更复杂的图像处理及识别更复

杂的概念,例如形状、面部、动物等。有人估计人类大脑皮层神经元总共约160亿个,其中的10%~25%用于视觉四。人类视觉系统的这种基于层的组织方式使深度学习获得了一些启发:前置的人工神经元层学习图像的基本属性,而更深的层则学习更复杂的概念。本书将提供一些在TensorFlow2.0中可工作的神经网络,其涵盖神经网络的几个主要方面。让我们从感知器开始吧!

1.5

感知器

感知器是一种简单的算法,其输人向量(通常称为输入特征,简称为特征)为x(x,x2,,xm,共m个值),输出为1(“是”)或0(“否”)。数学上,我们据此定义一个函数:

1

wx+b>0

f(x)=0否则

其中w是权重向量,wx是点积∑x,b是偏置。Wx+b实际上定义了一个边界超平面,

由w和b的值改变位置。

注意,超平面是一个子空间,其维数比它周围空间的维数少1。示例如图1-3所示。

该算法简洁且行之有效。例如,给定三个输入特征,如红色绿色和蓝色的数值,感知器可以尝试确定该颜色是否为白色。

需要注意的是,感知器无法表示“也许”结论。假设我们已经掌握了如何确定感知器的w和b,那么它只能回答“是”(1)或“否”

图1-3超平面示例

(0)。这就是所谓的“训练”过程,将在以下各节中讨论。

TensorFlow2.0代码的第一个例子

在tf.keras中创建模型的方式有3种:序列(Sequential)API、功能(Functional)API和模型(Model)子类。在本章中,我们将使用最简单的Sequential(),在第2章中再讨论另外两个。Sequentia1()模型是神经网络层的线性管道(栈)。以下代码定义了一个含有10个人工神经元的单层模型,期望输入变量(特征)个数为784。请留意,该网络是稠密的(dense),意味着每层中的每个神经元都连接到上一层的所有神经元,以及下一层的所有神经元:

6

第1章

import tensorflow as tffrom tensorflow import keras

NB CLASSES =10

RESHAPED 784

model tf.keras.models.Sequential()model.add(keras.layers.Dense(NB_CLASSES

input_shape=(RESHAPED,)kernel_initializer='zeros',name='dense layer',activation-'softmax'))

通过参数kernel_initializer,每个神经元都能用特定的权重值初始化。有多种参数值可供选择,常见如下:

口random uniform:权重初始化值在-0.05~0.05的小范围内均匀随机分布。口random_normal:权重初始化值服从均值为零、标准差为0.05的高斯分布。若对高斯分布不太熟悉,可以将其想象成一个对称的“钟形曲线”形状口zero:所有权重初始化为0。

完整的参数列表可访问线上文档:https://www.tensorf1low.org/api_docs/python/tf/keras/initializers.

1.6多层感知器—第一个神经网络示例

在本章中,我们将展示第一个具有多个稠密层的神经网络示例。由于历史原因,感知器专指具有单个线性层的模型,因此,如果模型中含

有多个线性层,则称之为多层感知器(MLP)。需要注

输入

意,输入层或输出层从外部可见,而所有其他中间层

输出

都是隐藏的,统称为隐藏层。在这种情况下,每个线性层对应一个线性函数,而多层感知器将多个线性层依次堆叠,如图1-4所示。

在图1-4中,第一个隐藏层中的每个节点接收输入,并根据其关联线性函数的计算值“发射”(0,1)信号。然后,第一个隐藏层的输出传递到第二层,在第

图1-4多层感知器示例

二层应用另一个线性函数,其结果传递到由单个神经元组成的输出层。有趣的是,这个分层的组织结构很像我们前面讨论的人类视觉系统。

1.6.1感知器训练的问题及对策

考虑一个神经元:权重w和偏差b的最佳选择是什么?理想情况下,我们希望提供一组训练示例,在计算机保证输出误差最小的前提下调整权重和偏差。

再具体一点,假设有一组猫的图片和另一组不包含猫的图片。同时,假设每个神经元的输入为图片中每个像素的值。那么,当计算机处理这些图像时,我们希望每个神经元都能调整其

···试读结束···

阅读剩余
THE END