内容导读

TensorFlow概述

TensorFlow环境搭建

TensorFlow计算机加速

一、TensorFlow概述

1、TensorFlow简介

‌‌TensorFlow是由‌Google开发的用于‌机器学习和人工智能的开源软件库,特别适用于‌深度神经网络的训练和推理。‌ 它是一个基于‌数据流图的符号数学系统,设计用于解决复杂的数学问题,并广泛应用于机器学习、深度学习等领域。

TensorFlow可以做很多有趣的工作,如图像风格迁移,通过神经网络可以将一幅图片的风格迁移到另一幅图片上。

如图所示是荷兰后印象派画家梵•高的The Starry Night(《星月夜》),将其作为被迁移的图片。

原始图片为麻省理工学院Stata中心,迁移后的图片如下。

2、TensorFlow版本变化

为了让大家更好地理解TensorFlow,下面从3个不同的角度对其进行分析。

(1)TensorFlow的计算模型为计算图(Graph)

TensorFlow的名字本身由两个单词构成,即Tensor和Flow。Tensor指的是张量,在TensorFlow中,Tensorf可以简单地理解为多维数组,而Flow翻译过来是“流”,表达了张量之间通过计算进行相互转换的含义。

(2)TensorFlow的数据模型为张量(Tensor)

在TensorFlow中,所有的数据类型都表示为张量。张量是一个多维数组,如果直接打印某一个张量,并不会像打印List或NumPy一样输出它的值,而是会得到一个结构,结构中包括该张量的名称、维度和类型。

(3)TensorFlow的运行模型为会话(Session)

在TensorFlow中,有了数据模型以及计算模型后,在代码执行过程中需要使用会话,会话负责管理代码运行时的所有资源。如果没有指定,会话将会自动加入系统生成的默认计算图中,执行其中的运算。

3、分布式TensorFlow

分布式TensorFlow有一些基本概念

(1)task:一个task一般会关联到某个单一的TensorFlow服务端的处理过程,属于一个特定的Job,并且在该Job的任务列表中有唯一的索引,可以将其理解为每台机器上的一个进程。

(2)Job:Job分为ps、worker两种,一个Job包含一系列致力于某个相同目标的task。

(3)Cluster(集群):一个TensorFlow集群包含一个或者多个TensorFlow服务端,集群被切分为一系列Job,而每个Job又会负责一系列的task。一个集群会专注于一个相对高层的目标,如用多台机器并行地训练一个神经网络。

二、TensorFlow环境搭建

1、安装Anaconda

‌‌Anaconda是一个用于科学计算的‌Python发行版,它提供了便捷的包管理和环境管理功能,特别适用于数据分析、‌机器学习等领域。

(1)下载64位Anaconda,然后双击下载好的包进入安装界面,单击“Next >”按钮。

说明:目前此工具已更新到更高版本v24.1.2啦,安装过程与2019.03相同。

(2)进入同意许可(License Agreement)界面,单击“I Agree”按钮同意协议许可

(3)进入选择安装类型(Select Installation Type)界面,选中“All Users (requires admin privileges)”单选按钮,为计算机所有用户进行安装,单击“Next >”按钮

(4)进入选择安装路径(Choose Install Location)界面,单击“Browse”按钮选择安装路径,然后单击“Next >”按钮

(5)进入高级安装选项(Advanced Installation Options)界面,勾选复选框,单击“Install”按钮

(6)进入安装完成(Installation Complete)界面,等待安装完成,这个过程比较长,安装完成后单击“Next >”按钮

(7)进入软件推荐界面,Anaconda推荐使用PyCharm作为IDE,PyCharm的安装在第2章介绍过,单击“Next >”按钮

(8)进入感谢安装Anaconda界面,取消勾选复选框,相关知识将在本书后续内容中进行讲解,单击“Finish”按钮,完成安装

(9)安装完成后,打开命令提示符窗口,输入“conda -V”以获得Anaconda版本号,如果输出正常,证明Anaconda正确安装,如图所示(目前已更新到了高版本v24.1.2啦)

(10)找到并打开Anaconda Navigator软件,进入Anaconda界面模式,Anaconda Navigator图标如图

(11)Anaconda在默认环境“base(root)”,新建TensorFlow的环境,在主界面中选择“Environments”→“Create”目录,在弹出的对话框,进行相应设置

(12)等待创建完成,创建完成的界面

(13)新环境创建完成后,在命令提示符窗口输入“activate TensorFlow”,进入新环境,如图

2、使用pip的Windows环境安装

(1)CPU版本安装

在Anaconda的TensorFlow环境下的命令提示符窗口内输入“pip install tensorflow==1.9.0”,安装1.9.0版本的TensorFlow及其相关依赖包(安装过程需全程联网),如图。

说明:当前已更新为更高版本。

安装完成后测试是否安装成功,在Anaconda的TensorFlow环境下的命令提示符窗口内输入“python”,进入Python环境。

输入“import tensorflow as tf”命令,查看是否报错,不报错说明安装成功。

(2)GPU版本安装

安装GPU版本的TensorFlow之前需要查看自己的计算机或嵌入式设备是否支持该版本。

如果支持GPU版本的TensorFlow,在安装之前需要安装CUDA和cuDNN。

要安装cuDNN,需要注册成为NVIDIA用户,填写问卷调查才可以下载。

在安装时需注意CUDA、cuDNN的版本匹配问题,安装成功后,即可开始安装GPU版本的TensorFlow,可以新建一个Anaconda环境安装GPU版本的TensorFlow。

在Anaconda环境下的命令提示符窗口输入“pip install tensorflow-gpu==1.9.0”命令即可完成安装。

3、使用pip的Linux环境安装

在Linux(以Ubuntu为例)下安装Anaconda和在Windows下安装的过程一样,在Linux系统下安装完Python(很多Linux系统自带Python 2和Python 3)和pip工具。

直接输入“pip3 install tensorflow ==1.9.0”命令完成CPU版本TensorFlow的安装,如下所示:

# 目前已更新到高版本24.1.2
corday@ubuntu:~$  pip3   install   tensorflow==1.9.0

4、使用源代码编译安装

在Linux操作系统上通过源码安装TensorFlow,需要使用Bazel编译工具。

安装依赖JDK8之后通过apt-get安装或者下载Bazel源码,然后安装Bazel编译工具。

Bazel编译工具安装完成后,下载TensorFlow源码目录。

进入TensorFlow的源码目录后,输入“./configure”命令进行TensorFlow编译安装配置。

配置过程中会出现Python路径询问等问题,可以根据自己的实际情况进行选择或者选择默认配置。

在配置完成后,采用Bazel命令安装TensorFlow,输入“bazel build -c opt /tensorflow/tools/pip_package:build_pip_package”。

安装完成后输入“bazel-bin/tensorflow/tools/pip_package/build_pip_package/tmp/tensorflow_pkg”命令,

在tmp/tensorflow_pkg目录下生成扩展名为.whl的文件,然后使用pip3命令安装该文件即可。

# 命令如下
pip3  install  文件名.whl

三、TensorFlow计算机加速

1、TensorFlow的使用

示例:新建TensorFlow目录,在TensorFlow目录下新建文件,命名为test.py,在PyCharm中编写代码实现向量的加法运算。

# tf.constant是一个计算,计算结果是一个张量,保存在变量a或者b中
a = tf.constant([1.0, 2.0], name="a")
b = tf.constant([3.0, 4.0], name="b")
# 将a和b相加,相加后的名字为“add”
result = tf.add(a, b, name = "add")
# 输出
print(result)
# 创建一个会话,通过Python上下文管理器来管理该会话
# 启动默认图表
with tf.Session() as sess:
      print("a = [1.0, 2.0], b = [3.0, 4.0]")
      print("两个向量相加: a + b = ", sess.run(result))
      # 将数据写到日志中
      summary_writer = tf.summary.FileWriter("log", sess.graph)

运行后效果图:

2、TensorFlow使用GPU加速

示例:在TensorFlow项目下新建test_gpu.py文件,使用GPU版本的TensorFlow实现向量的相加。

(在同一个环境下可同时安装CPU版本的TensorFlow和GPU版本的TensorFlow)

import tensorflow as tf
# 通过tf.device()将运算指定到CPU上
with tf.device("/cpu:0"):
      a = tf.constant([1.0, 2.0], name="a")
      b = tf.constant([3.0, 4.0], name="b")
# 通过tf.device()将运算指定到GPU上
with tf.device("/gpu:0"):
      result = tf.add(a, b, name = "add")
# 利用log_device_placement将参与运算的设备输出
sess = tf.Session(config=tf.ConfigProto(log_device_placement = True))
print(sess.run(result))

由上代码可知,并不是所有的操作都放在GPU上,a = tf.constant([1.0, 2.0], name="a")和b = tf.constant([3.0, 4.0], name="b")。

两个定义a和b常量的操作会通过“with tf.device("/cpu:0")”函数加载到CPU上,使用result = tf.add(a, b, name = "add")做相加运算时,这个过程会被加载到GPU上,并且这个操作会将参与运算的设备信息打印出来。

在GTX1050上得到如下运算结果:

Device mapping:
/job:localhost/replica:0/task:0/device:GPU:0 -> device: 0, name: GeForce GTX 1050, pci bus id: 0000:01:00.0, compute capability: 6.1
add: (Add): /job:localhost/replica:0/task:0/device:GPU:0
a: (Const): /job:localhost/replica:0/task:0/device:CPU:0
b: (Const): /job:localhost/replica:0/task:0/device:CPU:0
[4. 6.]

更多精彩内容请关注本站!

Logo

助力广东及东莞地区开发者,代码托管、在线学习与竞赛、技术交流与分享、资源共享、职业发展,成为松山湖开发者首选的工作与学习平台

更多推荐