0

0

带你初步了解 TensorFlow 的安装

王林

王林

发布时间:2023-04-12 20:31:01

|

2129人浏览过

|

来源于51CTO.COM

转载

1.基本简介与理解

1.1 简介

作为一个全面灵活的开源机器学习平台,我们可以借助TensorFlow 创建适用于桌面、移动、Web 和云环境的机器学习模型,也可以简单说TensorFlow 是一个开源的机器学习的框架,我们可以使用 TensorFlow 来快速地构建神经网络,同时快捷地进行网络的训练、评估与保存。

我们在安装TensorFlow之后,每次使用可以直接进行导入方便快捷

import TensorFlow as tf

TensorFlow官方网站如下:

关于TensorFlow |TensorFlow中文官网 (google.cn)

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

带你初步了解 TensorFlow 的安装

1.2 优劣势分析与架构解读

1.2.1 优势

● 灵活性强:只要计算能表示为计算流图,都可以使用TF。

● 真正的可移植性:支持台式机、服务器(CPU、GPU均可)、嵌入式设备。

● 多语言支持:基于Python,也提供C++使用界面、Ipython交互界面。

● 可视化工具:TensorFlow提供一个强大的可视化工具,TensorBoard。

● 丰富的封装库支持:TFlearn、TF-Slim、Keras等。

1.2.2 劣势

● 不支持Windows

除了TensorFlow所拥有的所有优势外,它对Windows用户的功能非常有限。对于Linux用户则是非常友好的.

● 支持GPU

TensorFlow只有NVIDIA对GPU的支持和Python编程语言对GPU编程的支持。

1.2.3 TensorFlow架构解读

带你初步了解 TensorFlow 的安装

第一层:设备通信层,由设备层和网络层组成,负责网络通信和设备管理。设备管理可以实现TF设备异构的特性,设备层支持CPU、GPU、Mobile等不同设备的通信实现。网络通信依赖gRPC通信协议实现不同设备间的数据传输和更新。

第二层:Kernel 实现层,以Tensor为处理对象,依赖网络通信和设备内存分配,实现了各种Tensor操作或计算,主要是机器学习的内核实现。

第三层:图计算层,由分布式主控和数据流执行器组成,包含本地计算流图和分布式计算流图的实现。分布式主控根据负载能力将不同的工作量分配在不同的设备上,数据流执行器基于最好的实验方式来执行数据流图.

第四层: API接口层,C API是对TF功能模块的接口封装,它是用C语言实现的。选择C语言是因为它是一种底层语言,简单快速、可靠,并且可以在任何操作系统上运行。

第五层: Client 层,Python,C++等编程语言在应用层通过API接口层调用TF核心功能实现相关实验和应用。

而TensorFlow的最后一层包含用python和C++实现的训练和推理库。

想全面了解TensorFlow入门实操的基础理论和设计思路,可以到中国大学 MOOC 学习《 TensorFlow 入门实操课程 》,快速上手TensorFlow基本应用和实践。

2.安装和使用

2.1 安装

此处以Ubuntu 16.04 或更高版本(64 位)为例进行讲解

2.1.1 使用pip安装

PIP 是一种包管理系统,用于安装和管理用 Python 写的软件包。

首先我们需要安装python环境, 需要使用 Python 3.6-3.9 和 pip 19.0 及更高版本.如果不确定我们是否已经安装,可以通过版本检查的方式进行查看,确保后续可以继续进行.

python3 –version
pip3 --version

如果没有安装,请参考如下代码:

sudo apt update
sudo apt install python3-dev python3-pip python3-venv

重点: 其实,此处针对python的安装我更建议安装anaconda,这样可以省很多的事情,anaconda包含了conda、Python等190多个科学包及其依赖项. 能减少各种库问题,版本问题.

其次我们需要建立环境,此处建议是安装虚拟环境

最后我们激活虚拟环境,然后在虚拟环境下进行TensorFlow pip 软件包的安装

pip install --upgrade TensorFlow

安装结束以后可以进行验证,确保安装成功

python -c "import TensorFlow

2.1.2 源码编译安装

git clone --recurse-submodules
https://github.com/TensorFlow/TensorFlow

安装

参考 https://www.php.cn/link/a03caec56cd82478bf197475b48c05f9

配置./configure根据你的实际情况如实回答一系列问题。回答之后 bazel 会对环境进行配置,此时需要机器可以访问外网,便于获取一些编译依赖包。一些包可能需要翻墙。

编译

bazel build -c opt --config=cuda
//TensorFlow/tools/pip_package:build_pip_package

2.1.3 Docker 镜像安装

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

当你通过 Docker 安装和运行 TensorFlow 时,它与你机器上之前已安装的软件包完全隔离。

官方镜像

官方提供了 4 个 Docker 镜像可供使用:

聚好用AI
聚好用AI

可免费AI绘图、AI音乐、AI视频创作,聚集全球顶级AI,一站式创意平台

下载

仅 CPU 版,无开发环境:gcr.io/TensorFlow/TensorFlow

仅 CPU 版,有开发环境:gcr.io/TensorFlow/TensorFlow:latest-devel

支持 GPU,无开发环境:gcr.io/TensorFlow/TensorFlow:latest-gpu

支持 GPU,有开发环境:gcr.io/TensorFlow/TensorFlow:latest-devel-gpu

创建 Docker 用户组

允许普通用户无需 sudo 即可启动容器。

usermod -a -G docker 用户名

启动 Docker 容器

我使用的是支持GPU的版本所以选择第四个进行安装.大家看自己的电脑支持什么版本然后对应命令下载即可.

docker run -it 
gcr.io/TensorFlow/TensorFlow

2.2使用

2.2.1占位符

语法: tf.compat.v1.placeholder(dtype,shape=None, name=None)

例子1:

w =
tf.constant([1, 1, 2, 2, 3, 3], shape=[2, 3])
h =
tf.constant([7, 7, 9, 9, 11, 11], shape=[3, 2])
#下面语法表示的是两个矩阵相乘
l
= tf.matmul(w, h)

with
tf.Session() as
print(sess.run([a,b,c]))

例子2:

首先import进行导入
import TensorFlow as tf
w = tf.placeholder(dtype=tf.float32)
h = tf.placeholder(dtype=tf.float32)
sum = tf.add(w,h)
## 填充数据时,使用run()方法的feed_dict参数指定张量对应的值即可,数据格式和字典类似。

with tf.Session() as sess:
# 填充占位符,填充形式类字典
res
= sess.run(sum, feed_dict={w: [5], h: [6]})
print(res)

具体的参数说明:

● dtype:张量中元素的数据类型,将被输入。

● shape : 默认为None:将被输入的张量的形状,它是一个可选参数。如果没有指定形状,人们可以输入任何形状的张量。

● name: 默认为None:操作的名称,可选参数。

2.2.2变量

Variable()构造函数希望变量有一个初始值,它可以是任何种类或形状的Tensor。变量的类型和形式由其初始值定义。形状和变量一旦被创建就会被固定下来。

在众多的参数中,需要注意的是validate_shape: 默认为True。如果是False,允许变量以未知的形状值初始化。如果是True,初始值的形状必须是已知的,这是默认的。

2.2.2.1创建变量

最常见的创建变量方式是使用Variable()构造函数。

import TensorFlow as tf
v = tf.Variable([1,2,3,4,5,6]) #创建变量v,为一个array
print(v) 
#查看v的shape,不是v的值。
## 结果是: <tf.Variable 'Variable:0' shape=(6,), numpy=array([1,2,3,4,5,6],dtype=int32)>
with tf.Session() as sess:
 
sess.run(v.initializer) ##运行变量的initializer。调用op之前,所有变量都应被显式地初始化过。
sess.run(v) ##查看v的值,结果是:array([1,2,3,4,5,6])

注意: 我们在进行初始化的时候也可以按如下书写

init = tf.global_variables_initializer()#全局变量初始化
with tf.Session() as sess:
sess.run(init)

2.2.2.2分配或修改变量中的元素

我们使用assign()方法来修改这个变量。

示例一:assign用来更新值

w = tf.Variable([3, 4,5,6])
w [1].assign(2)
w

输出结果如下:

<tf.Variable ‘Variable:0’ shape=(4,),
numpy=array([3, 2,5,6], dtype=int32)>
## 我们在此处使用assign将数组中的索引为1的值由4更新为2

示例二 : assign_add()用来添加变量值

# create variable
w = tf.Variable([3, 4,5,6])
# using assign_add() function
w.assign_add([1, 1,1,1])
w

输出结果如下:

<tf.Variable ‘Variable:0’ shape=(4,),
numpy=array([4, 5,6,7], dtype=int32)>
## 我们在此处使用assign_add()将数组中的每一个数值加1进行输出

示例三: assign_sub()用来从变量中减去值

# create variable
w = tf.Variable([3, 4,5,6])
# using assign_add() function
w.assign_sub([1, 1,1,1])
w
<tf.Variable ‘Variable:0’ shape=(4,),
numpy=array([2, 3,4,5], dtype=int32)>
## 我们在此处使用assign_sub()将数组中的每一个数值减1进行输出

2.2.2.3改变变量的形状

tf.reshape()方法用于改变变量的形状。必须传递变量和形状。

import TensorFlow as tf
w= tf.Variable([[3, 5, 6, 7]])
tf.reshape(w, shape=(2, 2))
w

输出结果如下:

<tf.Tensor: shape=(2, 2), ,
numpy=array([[3, 5],[6, 7]], dtype=int32)>

2.2.3 Session会话

TensorFlow中只有让Graph(计算图)上的节点在Session(会话)中执行,才会得到结果。Session的开启涉及真实的运算,因此比较消耗资源。在使用结束后,务必关闭Session。

方式一进行手动关闭:

import TensorFlow as tf
w= tf.constant(8, dtype=tf.int8)
h = tf.constant(6, dtype=tf.int8)
result= w + h
sess = tf.Session()
sess.run(result)#执行运算
sess.close() #手动关闭session

方式二进行自动关闭(使用到with语句):

import TensorFlow as tf
w= tf.constant(8, dtype=tf.int8)
h = tf.constant(6, dtype=tf.int8)
result= w + h
with tf.Session() as sess: #运算结束后session自动关闭
sess.run(res)

安装好TensorFlow后,初步入门机器学习的同学可以到中国大学MOOC上学习《 TensorFlow 入门实操课程 》,快速了解如何使用TensorFlow建立和训练神经网络、用自然语言处理系统教会机器理解、分析和回应人类的言语 、构建和训练模型等基本理论。我推荐对模型部署有需求的同学可以去了解《 TensorFlow 入门课程 - 部署篇 》,高效掌握在多种生产场景下灵活部署模型的技巧。大家也可以在TensorFlow官网(https://www.php.cn/link/e48382353dc6c66379fb8e1ebf48c5e8)上探索更多学习资源,持续精进机器学习知识与技能!

作者介绍

张云波,活跃的IT网红讲师,拥有学员31w+,国内早期开始和发布苹果Swift、安卓Kotlin、微信小程序、区块链技术的讲师之一。主攻前端开发、iOS开发、Android开发、Flutter开发、区块链Dapp开发,有丰富的大公司和海外工作经验。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
C语言变量命名
C语言变量命名

c语言变量名规则是:1、变量名以英文字母开头;2、变量名中的字母是区分大小写的;3、变量名不能是关键字;4、变量名中不能包含空格、标点符号和类型说明符。php中文网还提供c语言变量的相关下载、相关课程等内容,供大家免费下载使用。

410

2023.06.20

c语言入门自学零基础
c语言入门自学零基础

C语言是当代人学习及生活中的必备基础知识,应用十分广泛,本专题为大家c语言入门自学零基础的相关文章,以及相关课程,感兴趣的朋友千万不要错过了。

638

2023.07.25

c语言运算符的优先级顺序
c语言运算符的优先级顺序

c语言运算符的优先级顺序是括号运算符 > 一元运算符 > 算术运算符 > 移位运算符 > 关系运算符 > 位运算符 > 逻辑运算符 > 赋值运算符 > 逗号运算符。本专题为大家提供c语言运算符相关的各种文章、以及下载和课程。

362

2023.08.02

c语言数据结构
c语言数据结构

数据结构是指将数据按照一定的方式组织和存储的方法。它是计算机科学中的重要概念,用来描述和解决实际问题中的数据组织和处理问题。数据结构可以分为线性结构和非线性结构。线性结构包括数组、链表、堆栈和队列等,而非线性结构包括树和图等。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

263

2023.08.09

c语言random函数用法
c语言random函数用法

c语言random函数用法:1、random.random,随机生成(0,1)之间的浮点数;2、random.randint,随机生成在范围之内的整数,两个参数分别表示上限和下限;3、random.randrange,在指定范围内,按指定基数递增的集合中获得一个随机数;4、random.choice,从序列中随机抽选一个数;5、random.shuffle,随机排序。

632

2023.09.05

c语言const用法
c语言const用法

const是关键字,可以用于声明常量、函数参数中的const修饰符、const修饰函数返回值、const修饰指针。详细介绍:1、声明常量,const关键字可用于声明常量,常量的值在程序运行期间不可修改,常量可以是基本数据类型,如整数、浮点数、字符等,也可是自定义的数据类型;2、函数参数中的const修饰符,const关键字可用于函数的参数中,表示该参数在函数内部不可修改等等。

564

2023.09.20

c语言get函数的用法
c语言get函数的用法

get函数是一个用于从输入流中获取字符的函数。可以从键盘、文件或其他输入设备中读取字符,并将其存储在指定的变量中。本文介绍了get函数的用法以及一些相关的注意事项。希望这篇文章能够帮助你更好地理解和使用get函数 。

671

2023.09.20

c数组初始化的方法
c数组初始化的方法

c语言数组初始化的方法有直接赋值法、不完全初始化法、省略数组长度法和二维数组初始化法。详细介绍:1、直接赋值法,这种方法可以直接将数组的值进行初始化;2、不完全初始化法,。这种方法可以在一定程度上节省内存空间;3、省略数组长度法,这种方法可以让编译器自动计算数组的长度;4、二维数组初始化法等等。

618

2023.09.22

TypeScript类型系统进阶与大型前端项目实践
TypeScript类型系统进阶与大型前端项目实践

本专题围绕 TypeScript 在大型前端项目中的应用展开,深入讲解类型系统设计与工程化开发方法。内容包括泛型与高级类型、类型推断机制、声明文件编写、模块化结构设计以及代码规范管理。通过真实项目案例分析,帮助开发者构建类型安全、结构清晰、易维护的前端工程体系,提高团队协作效率与代码质量。

49

2026.03.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号