1。基本介绍和理解1.1简介作为一个全面灵活的开源机器学习平台,我们可以使用TensorFlow创建适用于桌面、移动、Web和云环境的机器学习模型,或者简单地说,TensorFlow是一个开源机器学习框架。我们可以使用TensorFlow快速搭建神经网络,同时快速训练、评估和保存网络。我们安装好TensorFlow之后,每次使用的时候直接将TensorFlow导入为tf就可以了。TensorFlow官网如下:关于TensorFlow|TensorFlow中文官网(google.cn)1.2优缺点分析及架构解读灵活性强:只要能将计算表达为计算流图,就可以使用TF。●真正的便携性:支持台式机、服务器(CPU和GPU)和嵌入式设备。●多语言支持:基于Python,同时提供C++用户界面和Ipython交互界面。●可视化工具:TensorFlow提供了强大的可视化工具TensorBoard。●丰富的封装库支持:TFlearn、TF-Slim、Keras等。1.2.2缺点●不支持Windows除了TensorFlow拥有的所有优点外,它对Windows用户的功能非常有限。它对Linux用户非常友好。●支持GPUTensorFlow仅NVIDIA支持GPU,Python编程语言支持GPU编程。1.2.3TensorFlow架构解读第一层:设备通信层,由设备层和网络层组成,负责网络通信和设备管理。设备管理可以实现TF设备的异构特性,设备层支持CPU、GPU、Mobile等不同设备的通信。网络通信依赖gRPC通信协议实现不同设备之间的数据传输和更新。第二层:Kernel实现层,以Tensor为处理对象,依赖网络通信和设备内存分配,实现Tensor的各种运算或计算,主要是机器学习的内核实现。第三层:图计算层,由分布式主控和数据流执行器组成,包括本地计算流图和分布式计算流图的实现。分布式主控根据负载能力将不同的工作负载分配到不同的设备上,数据流执行器根据最佳实验方法执行数据流图。第四层:API接口层,CAPI是TF功能模块接口的封装,用C语言实现。选择C??语言是因为它是一种简单、快速、可靠并且可以在任何操作系统上运行的低级语言。第五层:Client层,Python、C++等编程语言在应用层通过API接口层调用TF核心功能,实现相关实验和应用。TensorFlow的最后一层包含用Python和C++实现的训练和推理库。如果想全面了解TensorFlow入门实践的基本理论和设计思路,可以到中大MOOC学习《 TensorFlow 入门实操课程 》,快速上手TensorFlow的基本应用和实践。2.安装与使用2.1安装这里以Ubuntu16.04及以上版本(64位)为例进行说明2.1.1使用pip安装PIP是一个包管理系统,用于安装和管理用Python编写的软件包。首先我们需要安装python环境,需要使用Python3.6-3.9和pip19.0及更高版本。如果不确定我们是否已经安装,可以通过版本检查来确认是否可以继续。python3–versionpip3–version如果没有安装,请参考以下代码:sudoaptupdatesudoaptinstallpython3-devpython3-pippython3-venv重点:其实这里安装python我推荐安装anaconda,可以省很多事,anaconda包括conda、Python和190多个科学包及其依赖。可以减少各种库问题和版本问题。其次,要营造环境。这里的建议是安装虚拟环境。最后,我们激活虚拟环境,然后在虚拟环境中执行TensorFlowpip打包安装pipinstall--upgradeTensorFlow安装完成后可以验证,确保安装成功python-c"importTensorFlow2.1.2源码编译安装gitclone--recurse-submoduleshttps://github.com/TensorFlow/TensorFlow安装参考http://bazel.io/docs/install.htmlConfigure./configure根据自己的实际情况如实回答一系列问题,回答完毕后,bazel会配置环境,这时候需要机器可以访问外网,很容易获取一些编译依赖,有些包可能需要翻墙,编译bazelbuild-copt--config=cuda//TensorFlow/tools/pip_package:build_pip_package2.1.3Docker镜像安装Docker是一个开源的应用容器引擎,可以让开发者打包自己的应用和d依赖到一个可移植的容器中,然后发布到任何流行的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即可启动容器。usermod-a-Gdocker用户名来启动Docker容器。我用的是支持GPU的版本,所以选择第四个安装。你可以查看你的电脑支持什么版本,然后下载相应的命令。dockerrun-itgcr.io/TensorFlow/TensorFlow2.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)和tf.Session()asprint(sess.run([a,b,c]))示例2:首先importimportTensorFlowastfw=tf.placeholder(dtype=tf.float32)h=tf.placeholder(dtype=tf.float32)sum=tf.add(w,h)##填充数据时,使用run()方法的feed_dict参数指定对应的值张量,数据格式类似于字典。withtf.Session()assess:#fillplaceholders,fillformclassdictionaryres=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()构造函数。importTensorFlowastfv=tf.Variable([1,2,3,4,5,6])#将变量v创建为数组print(v)#检查v的形状,而不是v的值。##结果是:
