深度学习从0到1
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

第5章 深度学习框架Tensorflow基础使用

在介绍正式内容以前,我想先给大家说明一个基本情况,也就是目前深度学习还处于一个非常早期的、不成熟的阶段,所以我们会看到各种各样的人写着各种各样风格的代码。当我们想完成一个应用的时候,我们会有很多种方式和选择,有时候选择太多也不一定是好事,因为我们可能会面临选择的困难。虽然“条条大路通罗马”,但是有些路好走,有些路不好走;有些路部分人觉得好走,部分人觉得不好走。很多时候我们很难判断哪条路好,哪条路不好。

给大家举一个例子来说明这个问题,如图5.1所示。

图5.1 “条条大路通罗马”

比如我们想做一个图像识别的应用,那么首先我们有很多种深度学习的框架可以选择。如果是在2016—2017年,那么这个选择还是挺难的,因为每个深度学习的框架都有自己的优缺点,我们可能很难选择学习哪一个框架。当然,这个问题现在相对变得容易了,经过时间的考验,现在业内公认的首选的深度学习框架就是Tensorflow或者Pytorch。Pytorch是最近一两年学术界最喜欢使用的深度学习框架,Tensorflow是落地应用最多的深度学习框架。如果让我推荐的话,我会推荐两者都学,多学总不是坏事。我们这本书主要以Tensorflow为重点,大家可以先跟着我把Tensorflow学好。

深度学习框架选好之后,接下来要继续选择,每个框架在实现某个具体应用的时候通常都会有很多种实现方式。比如载入数据进行数据预处理有很多种方法,搭建网络有很多种方法,训练模型又有很多种方法。比如图5.1中,假设我们选择了Tensorflow作为我们的深度学习框架,那么我们在搭建网络结构的时候又可以选择使用Tensorflow的高级API:Slim、TFLearn、tf.layers、tf.keras或其他API,最后完成图像识别的应用。由于各种方法比较多,我们全部都学并不是一个明智的选择,所以在本书中我会选择我认为比较容易理解和学习的方法来教大家。Tensorflow 2.0推出以后,谷歌官方建议大家使用tf.keras来搭建和训练模型。Keras也是我非常喜欢的一款深度学习框架,它是所有深度学习框架中最容易使用的,没有之一,所以也比较适合初学者选用。鉴于Keras的简洁易用性,以及容易理解和学习的特点,本书中关于深度学习的应用大部分都会基于tf.keras的API完成。