前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >带你入门机器学习与TensorFlow2.x

带你入门机器学习与TensorFlow2.x

作者头像
蒙娜丽宁
发布2020-04-13 12:31:51
6720
发布2020-04-13 12:31:51
举报
文章被收录于专栏:极客起源

本文主要介绍人工智能、机器学习和深度学习的区别,以及软硬件环境的搭建,包括Tensorflow1.x和Tensorflow2.x在同一台机器上如何共存。在后续的文章中将深入讲解用Tensorflow2.x训练各种模型,以及利用模型完成相关的工作。

1 人工智能、机器学习和深度学习

最近几年,人工智能(AI,Artificial Intelligence)越来越受到人们的关注,但随之而来的是各式各样的名词,例如,我们会经常看到人工智能、机器学习和深度学习这3个词会出现在同一篇文章中,那么它们有什么区别和关联呢?本节将会解答这个问题。

1.1 什么是人工智能

人工智能,英文缩写是AI,英文全称是Artificial Intelligence。为了方便,在后面的章节中统称人工智能为AI。尽管AI是最近几年才广受关注的,但AI这个概念的年龄相信比绝大多数阅读本书的读者的年龄都要大,因为AI的概念诞生于60多年前的1956年。

在1956年,几个计算机科学家在达特茅斯会议上提出了“人工智能”的概念。由于当时计算机刚刚出现不久,但人类一直有一个梦想,希望可以创造类似于人类的智慧,甚至与人类一样的文明。所以这些科学家梦想着用刚刚出现的计算机来构造复杂的、用于类似于人类智慧的机器,这就是AI由来。

在随后的半个多世纪以来,AI就一直陪伴着人类,并在科学实验室中慢慢孵化。在这漫长的几十年,AI的发展经历的很多次两级分化,要么被称作人类文明的未来,要么被认为是疯子的妄想,而被扔进垃圾堆。

这种情况一直延续到2012年,直到互联网的飞速发展而产生了大量的数据,还有就是计算机运算能力的显著提升,人工智能开始大爆发。据领英近日发布的《全球AI领域人才报告》显示,截至2017年一季度,基于领英平台的全球AI(人工智能)领域技术人才数量超过190万,仅国内人工智能人才缺口达到500多万。人工智能的研究领域也在不断扩大,其中就包括本书重点要将的深度学习。

那么AI到底研究什么呢?其实AI要研究的方向相当多,图1描述了AI研究的主要方向。

图1 AI研究的方向

从图1可以看出,AI的研究方向分为2个层次,第1层分为计划于调度、专家系统、机器学习、推荐系统等。而机器学习还可以继续往下分,例如,有监督学习、无监督学习、深度学习等。在这2层分类中,发现了前面提到的机器学习和深度学习。其实这3者的关系如下:

人工智能 > 机器学习 > 深度学习

也就是说,机器学习包含深度学习,而人工智能包含机器学习。

1.2 什么是机器学习

机器学习是实现人工智能的一种方法,基本原理是使用算法来解析数据,并从中学习到规律,然后对真实世界中的事件做出决策和预测。也就是说,机器学习的核心有两个:算法和数据。与传统的人工智能程序不同,机器学习需要依赖大量的数据进行“训练”,通过各种算法从数据中学习如何完成任务。

其实我们身边已经到处都是机器学习的成果了,例如,当我们在网上商城浏览商品时,会经常出现商品推荐的信息。可能不了解其中原理的用户会感到奇怪,网上商城怎么知道我需要什么呢?而且推荐的商品大多是我们刚兴趣的。其实这是商城根据用户以往的购物和浏览记录,并使用一定的算法分析出来的。我们可以将这样的系统成为推荐系统,通过这类系统可以帮助商城为用户提供建议,并让用户尽可能很快找到自己系统的商品,同时也会提高用户的平均消费额。

机器学习的分支很多,大多来源于早起的人工智能领域,传统的算法包括决策树、贝叶斯分类、聚类、支持向量机、Adaboost等。从学习方法上来分,机器学习算法可以分为有监督学习(如分类问题)、无监督学习(如聚类问题)、半监督学习、集成学习、深度学习、强化学习等。传统的机器学习算法在指纹识别、基于Haar的人脸检测、基于HoG特征的物体检测等领域的应用基本达到了商业化的要求或者特定场景的商业化水平,但每前进一步都异常艰难,直到深度学习算法的出现。

1.3 什么是深度学习

深度学习并不是一种独立的学习方法,其本身也会用到有监督和无监督的学习方法来训练深度神经网络。但由于近几年该领域发展迅猛,一些特有的学习手段相继被提出(如残差网络),因此越来越多的人将其单独看作一种学习的方法。最初的深度学习是利用深度神经网络来解决特征表达的一种学习过程。深度神经网络本身并不是一个全新的概念,可大致理解为包含多个隐含层的神经网络结构。为了提高深层神经网络的训练效果,人们对神经元的连接方法和激活函数等方面做出相应的调整。其实有不少想法早年间也曾有过,但由于当时用于训练的数据量不足、计算能力落后,因此最终的效果不尽如人意。但随着近几年互联网的成熟,以及GPU系统的提高,深度学习的潜力逐渐被挖掘,深度学习以摧枯拉朽般地效果实现了各种任务,使得似乎所有的机器辅助功能都变为可能。无人驾驶汽车,预防性医疗保健,甚至是更好的电影推荐,都近在眼前,或者即将实现。

深度学习同样需要大量的数据,以及强大的计算能力,当然,还有优秀的算法,所以如果用一个公式描述深度学习,这么这个公式就是下面的样子:

深度学习 = 算法 + 数据 + 算力

也就是说,要想将深度学习应用于真实的项目,算法、数据和算力缺一不可。

1.4 人工智能、机器学习和深度学习的关系

在前面已经描述了人工智能、机器学习和深度学习的概念,那么这三者有什么关系呢?其实这三者是包含与被包含的关系。

机器学习是一种实现人工智能的方法,深度学习是一种实现机器学习的技术。这三者的关系如图2所示。

图2 人工智能-机器学习-深度学习的关系

目前,业界有一种较为普遍的错误观点,即“深度学习最终可能会淘汰掉其他所有机器学习算法”。这种观点的产生主要是因为当下深度学习在计算机视觉、自然语言处理领域的应用远超过传统的机器学习方法,并且媒体对深度学习进行了大肆夸大的报道。深度学习,作为目前最热的机器学习方法,但并不意味着是机器学习的终点。起码目前存在如下问题:

•深度学习模型需要大量的训练数据,才能展现出神奇的效果,但现实生活中往往会遇到小样本问题,此时深度学习方法无法入手,传统的机器学习方法就可以处理

•有些领域,采用传统的简单的机器学习方法就可以很好地解决,没必要非得用复杂的深度学习方法

•深度学习的思想,来源于人脑的启发,但绝不是人脑的模拟,举个例子,给一个三四岁的小孩看一辆汽车后,再见到哪怕外观完全不同的汽车,小孩也十有八九能做出那是一辆汽车的判断,也就是说,人类的学习过程往往不需要大规模的训练数据,而现在的深度学习方法显然不是对人脑的模拟。

深度学习大佬Yoshua Bengio曾说过:科学不是战争而是合作,任何学科的发展从来都不是一条路走到黑,而是各种技术之间、同行之间互相学习、互相借鉴、博采众长、相得益彰,站在巨人的头顶不断前行。机器学习的研究也是一样,你死我活那是邪教,开放包容才是正道。

2. 准备硬件环境

由于本专栏中代码所使用的模型很多都比较大,所以建议读者准备一个带有 GPU 的机器,并使用和GPU 相配套的主板及电源。

如果不想自己准备训练模型的机器,则可以用云服务的方式训练模型。云服务是需要单独购买的,且按使用时间收费。如果不需要频繁训练模型,则推荐使用这种方式。

读者在学习本书的过程中,需要频繁训练模型。如果使用云服务,则会花费较高的成本。建议直接购买一台带有 GPU 卡的机器会好一些。

推荐选择Intel公司生产的 GPU,型号最好高于 GTX1070。选择 GPU 还需要考虑显存的大小。推荐选择显存大于 8GB 的 GPU。这一点很重要,因为在运行大型神经网络时,系统默认将网络节点全部载入显存。如果显存不足,则会显示资源耗尽提示,导致程序不能正常运行。

3. 安装Tensorflow

安装 TensorFlow 有2种方式:

  • 下载二进制安装包进行安装。
  • 下载源码进行手动编译,然后再安装。 第一种方式比较简单、稳定,适用于大多数的情况。第二种方式相对较难,容易出错,但灵活度更高,适用于定制化场景。 为了让读者可以快速上手,本节将介绍第1种安装方法。

3.1 到哪安装哪一个版本

TensorFlow分为Nightly版本和Release版本,那么我们到底要安装哪一个版本呢?首先应该了解一下什么是Nightly版本和Release版本。

在 GitHub 网站上,TensorFlow 项目的主页(https://github.com/tensorflow/tensorflow)中介 绍了 TensorFlow 两种版本的安装包:Nightly 版本与 Release 版本。这两个版本的含义以下。

  • Nightly 版本:TensorFlow 的源码更新非常活跃。为此,TensorFlow 开发团队搭建了一 个自动构建版本的平台。该平台会定期(一般是一天一次)将最新的 TensorFlow 源码 编译成二进制安装包。这个安装包被称为 Nightly 版本。
  • Release 版本:当 Nightly 更新到一定程度,根据更新功能的完成量与当前版本的 BUG 情况,会推出一个阶段性的发布版本。这个版本被称为 Release 版本。

在 Nightly 版本中包含了 TensorFlow 的最新功能,但稳定性不如 Release 版本,所以它常用于研究和做实验。而Release 版本的稳定性更好,但功能相对滞后,常用于开发工程项目。

3.2 下载和安装 TensorFlow

由于TensorFlow需要使用Python环境,所以在安装TensorFlow之前,先要安装Python环境,推荐安装Anaconda,Anaconda是一个集成的Python开发环境,集成了目前比较流行和常用的各种Python程序库,读者可以直接到官方网站下载Anaconda:https://www.anaconda.com/distribution

在装好 Anaconda 之后,可以用 pip 命令安装 TensorFlow 了。这个步骤与系统无关。但需要让电脑处于联网状态。

3.2.1 安装 TensorFlow 的 Release 版本

在命令行里输入以下命令:

pip install tensorflow-gpu

上面命令执行后,系统会将支持 GPU 的 TensorFlow Release 版本安装包下载到机器上,并 进行安装。

如果是想安装 CPU 版本,则可以输入下列命令:

pip install tensorflow

如果想安装指定版本,则可以直接在命令后面加上版本号:

pip install tensorflow-gpu==1.13.1

该命令执行后,系统会将 1.13.1 版本的 TensorFlow 安装到本机。

3.2.2 安装 TensorFlow 的 Nightly 版本

安装TensorFlow的Nightly版本,直接执行下面的命令:

pip install tf-nightly-gpu 安装Nightly的gpu版本

pip install tf-nightly 安装Nightly的cpu版本

注意:如果安装的是 GPU 版本,还需要按照 3.3节的方法安装配套的开发包,才可以正常使用。

还有一种更简单的方式安装 GPU 版本的 TensorFlow。在安装完 Anaconda 软件后,直接使用以下命令:

conda install tensorflow-gpu

系统会自动把 TensorFlow 的 GPU 版本及对应的 NVIDIA 驱动安装到本机,不再需要按照 3.3节的描述进行手动安装。

用 conda 命令安装虽然方便,但这不属于 TensorFlow 官方支持的安装方式。用这种方式只能安装比最新发布的版本滞后一些。如果想及时安装最新发布的 TensorFlow,还得用 pip 命令。

如果想查看 Anaconda 软件中集成的 TensorFlow 安装包版本,可以通过以下命令:

anaconda search -t conda tensorflow

3.3 GPU 版本的安装方法

如果用 pip 命令安装 TensorFlow 框架的 GPU 版本,还需要安装 CUDA 软件包和 CuDnn 库。

如果是用 conda 命令安装 TensorFlow,则可以跳过此节。

3.3.1 在 Windows 中安装 CUDA

来到官方网站:https://developer.nvidia.com/cuda-downloads,如图3所示。

根据自己的环境选择对应的版本。以 Windows 为例,exe 文件分为网络版和本地版:

  • 网络版安装包比较小,但是在安装过程中需要联网下载其他文件。
  • 本地版安装包是直接下载完整安装包,下载之后就可以正常安装了。

图3

3.3.2 安装 Visual Studio 以支持 CUDA 的更多工具包

CUDA 中的部分工具需要运行在 Visual Studio 之上。Visual Studio 是微软开发的集成化开 发工具包。如果需要以源码编译的方式安装 TensorFlow,则建议安装 Visual Studio。否则也可以跳过该步骤。在安装 CUDA 过程中,也需要安装Visual Studio,如果读者的机器上没有Visual Studio,请到微软官方网站下载Visual Studio的社区版本(免费)进行安装。

在已经发布的 CUDA 版本中,有些是有补丁包的。补丁包的作用是对该版本的功能扩充和问题修复。建议读者安装。

以 CUDA 9.0 为例,基于 Windows 的 CUDA 软件包带有配套的补丁包,建议一起下载下来。共 3 个文件:cuda_9.0.176_win10.exe、cuda_9.0.176.1_windows.exe 和 cuda_9.0.176.2_windows.exe, 需要按照版本、补丁的序号顺序依次安装。

CUDA有很多版本,如果读者想下载和安装CUDA的其他版本,可以到下面的页面去寻找CUDA的相应版本:

https://developer.nvidia.com/cuda-toolkit-archive

进入页面,会看到如图4所示的内容,读者可以选择相应的CUDA版本。

图4

3.3.2 安装cuDNN

通过以下网址来到下载页面。需要注册并且填写问卷才能下载这个安装包。

https://developer.nvidia.com/cudnn

cuDNN 库的版本选择也是有规定的。以 Windows 10 操作系统为例,具体如下:

  • TensorFlow 1.0 到 1.2 版本使用的是 cuDNN 5.1 版本(安装包为 cudnn-8.0- windows10-x64-v5.1.zip)。
  • TensorFlow 1.3 和 1.4 版本使用的是 cuDNN 6.0 版本(安装包为 cudnn-8.0- windows10-x64-v6.0.zip)。
  • TensorFlow 1.5 到 1.10 版本使用的是 cuDNN 7.0 版本(安装包为 cudnn-9.0- windows10-x64-v7.rar)。
  • TensorFlow 1.11 和 1.12 版本使用的是 cuDNN 7.2 版本(安装包为 cudnn-9.0- windows10-x64-v7.2.1.38.zip)。

4. TensorFlow 1.x 版本与 2.x 版本共存的解决方案

由于 TensorFlow 框架的 1.x 版本与 2.x 版本差异较大。在 1.x 版本上实现的项目,有些并不能直接运行在 2.x 版本上。而新开发的项目推荐使用 2.x 版本。这就需要解决 1.x 版本与 2.x 版本共存的问题。

如用 Anaconda 软件创建虚环境的方法,则可以在同一个主机上安装不同版本的 TensorFlow。

4.1. 查看 Python 虚拟环境及 Python 的版本

在装完 Anaconda 软件之后,默认会创建一个虚环境。该虚环境的名字是“base”是当前系统的运行主环境。可以用“conda info --envs”命令进行查看。

4.1.1 查看所有的 Python 虚拟环境

查看Python虚拟环境的命令如下:

conda info --envs

该命令执行后,会显示如图5所示的内容。

图5

在显示结果中可以看到,当前虚环境的名字是“base”,是 Anaconda 默认的 Python 环境,还有一个py27和py3.7,分别是Python2.7的环境和Python3.7的环境。

4.1.2 查看当前 Python 的版本

可以通过“python --version”命令查看当前 Python 的版本。具体命令如下:

python --version

执行该命令后会显示如下内容:

Python 3.7.4

在显示结果中可以看到,当前 Python 的版本是 3.7.4。

4.1.3 创建 Python 虚拟环境

创建 Python 虚拟环境的命令是“conda create”。在创建时,应指定好虚环境的名字和需要使用的版本。

创建Python虚拟环境的命令如下:

conda create --name tf2 python=3.7.4

该命令创建一个名为“tf2”的 Python 虚环境。具体步骤如下:

1 在创建过程中会提示是否安装对应软件包,如图6所示。输入“Y”,则下载及安装 软件包。

图6

安装完软件包后,系统将会自动进行其他配置。如果出现如图 7 所示的界面,则表示创建 Python 虚拟环境成功。如果现实如图7的内容,说明Python虚拟环境已经安装完成。

图7

安装完后,可以使用下面的命令激活tf2环境。

conda activate tf2

执行下面的命令会使用默认的Python环境

conda deactivate

在Windows中需要使用下面的命令激活tf2,以及恢复默认的Python环境

activate tf2 激活tf2环境

deactivate 恢复默认的Python环境

如果想删除已经创建的虚环境,则可以使用“conda remove”命令。具体命令如下:

conda remove --name tf2 --all

由于安装Anaconda后,直接使用下面的命令安装Tensorflow2.x。

pip install tensorflow

如果要安装Tensorflow1.x,那么需要按前面的步骤创建一个名为tf1的Python虚拟环境,然后使用下面的命令安装tensorflow的特定版本。

pip install tensorflow==1.15

如果tensorflow已经存在其他版本,在安装新版tensorflow之前,先要使用下面的命令卸载当前的tensorflow版本。

pip uninstall tensorflow

如果成功完成前面的步骤,那么可以在tf1和tf2之间切换,会返现tf1中的tensorflow是1.x版本,而在tf2中是2.x版本。

4.1.4 检验Tensorflow2.x是否安装正确

安装完Tensorflow2.x后,可以使用python命令执行下面的代码。这段代码是利用tf计算两个浮点数的和(2+4)。如果成功输出6,说明tf2安装是成功的。这段代码不能在tf1环境中执行,因为这些代码是基于tf2的。tf1和tf2的差别很大。

代码语言:javascript
复制
import tensorflow as tfassert tf.__version__.startswith('2.')os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'# 1.创建输入张量a = tf.constant(2.)b = tf.constant(4.)# 2.直接计算并打印print('a+b=',a+b)
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-02-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 极客起源 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
NLP 服务
NLP 服务(Natural Language Process,NLP)深度整合了腾讯内部的 NLP 技术,提供多项智能文本处理和文本生成能力,包括词法分析、相似词召回、词相似度、句子相似度、文本润色、句子纠错、文本补全、句子生成等。满足各行业的文本智能需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档