1.基本简介与理解
1.1 简介
作为一个全面灵活的开源机器学习平台,我们可以借助TensorFlow 创建适用于桌面、移动、Web 和云环境的机器学习模型,也可以简单说TensorFlow 是一个开源的机器学习的框架,我们可以使用 TensorFlow 来快速地构建神经网络,同时快捷地进行网络的训练、评估与保存。
我们在安装TensorFlow之后,每次使用可以直接进行导入方便快捷
import TensorFlow as tf
TensorFlow官方网站如下:
关于TensorFlow | TensorFlow中文官网 (google.cn)
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架构解读
第一层:设备通信层,由设备层和网络层组成,负责网络通信和设备管理。设备管理可以实现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 及更高版本.如果不确定我们是否已经安装,可以通过版本检查的方式进行查看,确保后续可以继续进行.
如果没有安装,请参考如下代码:
重点: 其实,此处针对python的安装我更建议安装anaconda,这样可以省很多的事情, anaconda包含了conda、Python等190多个科学包及其依赖项. 能减少各种库问题,版本问题.
其次我们需要建立环境,此处建议是安装虚拟环境
最后我们激活虚拟环境,然后在虚拟环境下进行TensorFlow pip 软件包的安装
安装结束以后可以进行验证,确保安装成功
2.1.2 源码编译安装
安装
参考 http://bazel.io/docs/install.html
配置./configure 根据你的实际情况如实回答一系列问题。回答之后 bazel 会对环境进行配置,此时需要机器可以访问外网,便于获取一些编译依赖包。一些包可能需要翻墙。
编译
2.1.3 Docker 镜像安装
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
当你通过 Docker 安装和运行 TensorFlow 时,它与你机器上之前已安装的软件包完全隔离。
官方镜像
官方提供了 4 个 Docker 镜像可供使用:
仅 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 即可启动容器。
启动 Docker 容器
我使用的是支持GPU的版本所以选择第四个进行安装.大家看自己的电脑支持什么版本然后对应命令下载即可.
2.2使用
2.2.1占位符
语法: tf.compat.v1.placeholder(dtype, shape=None, name=None)
例子1:
例子2:
具体的参数说明:
● dtype:张量中元素的数据类型,将被输入。
● shape : 默认为None:将被输入的张量的形状,它是一个可选参数。如果没有指定形状,人们可以输入任何形状的张量。
● name: 默认为None:操作的名称,可选参数。
2.2.2变量
Variable()构造函数希望变量有一个初始值,它可以是任何种类或形状的Tensor。变量的类型和形式由其初始值定义。形状和变量一旦被创建就会被固定下来。
在众多的参数中,需要注意的是validate_shape : 默认为True。如果是False,允许变量以未知的形状值初始化。如果是True,初始值的形状必须是已知的,这是默认的。
2.2.2.1创建变量
最常见的创建变量方式是使用Variable()构造函数。
注意: 我们在进行初始化的时候也可以按如下书写
2.2.2.2分配或修改变量中的元素
我们使用assign()方法来修改这个变量。
示例一:assign用来更新值
输出结果如下:
示例二 : assign_add()用来添加变量值
输出结果如下:
示例三: assign_sub()用来从变量中减去值
2.2.2.3改变变量的形状
tf.reshape()方法用于改变变量的形状。必须传递变量和形状。
输出结果如下:
2.2.3 Session会话
TensorFlow中只有让Graph(计算图)上的节点在Session(会话)中执行,才会得到结果。Session的开启涉及真实的运算,因此比较消耗资源。在使用结束后,务必关闭Session。
方式一进行手动关闭:
方式二进行自动关闭(使用到with语句):
安装好TensorFlow后,初步入门机器学习的同学可以到中国大学MOOC上学习《 TensorFlow 入门实操课程 》,快速了解如何使用TensorFlow建立和训练神经网络、用自然语言处理系统教会机器理解、分析和回应人类的言语 、构建和训练模型等基本理论。我推荐对模型部署有需求的同学可以去了解《 TensorFlow 入门课程 - 部署篇 》,高效掌握在多种生产场景下灵活部署模型的技巧。大家也可以在TensorFlow官网(https://tensorflow.google.cn/)上探索更多学习资源,持续精进机器学习知识与技能!
作者介绍
张云波,活跃的IT网红讲师,拥有学员31w+,国内早期开始和发布苹果Swift、安卓Kotlin、微信小程序、区块链技术的讲师之一。主攻前端开发、iOS开发、Android开发、Flutter开发、区块链Dapp开发,有丰富的大公司和海外工作经验。