Tensorflow系列一:环境搭建

这个系列主要摘自《Tensorflow实战Google深度学习框架》这本书,边学习边整理其中主要内容,以便记忆。

Tensorflow系列一:环境搭建

一 Tensorflow的主要依赖包

1. Protocol Buffer

​ Protocol Buffer是谷歌开发的处理结构化数据的工具。这里结构化数据指的是拥有多种属性的数据。假设用户信息包括名字,ID和Email地址。

一个用户的信息表示示例
name:张三
id: 12345
email: zhangsan@abc.com

​ 当要将结构化数据数据持久化或进行网络传输时,需要先将它序列化(将结构化数据变成数据流的格式,简单地说就是变为一个字符串)。如何将结构化数据序列化,并从序列化数据流中还原结构化数据,称为处理结构化数据

​ XML和JSON是两种常用的结构化数据处理工具。

 <!-- xml格式示例 --> 
<user>
  <name>张三</name>
  <id>12345</id>
  <email>zhangsan@abc.com</email>
</user>  
//JSON格式示例
{
  "name":"张三""id":"12345",
  "email":"zhangsan@abc.com",
}

​ 不同于XML和JSON,Protocol Buffer序列化后得到的数据不是可读的字符串威视二进制流。再者Protocol Buffer需要先定义数据的格式(schema)再还原结构化数据。(Protocol Buffer序列化的数据比XML格式数据小3到10倍,解析时间要快20到100倍)。

//Protocol Buffer数据格式定义示例
message user{
  optional string name = 1;//optional,取值可为空
  required int32 id = 2;//required,每个message实例必须包含该属性
  repeated string email = 3;//repeated,属性取值可以是一个列表
}

2. Bazel

​ Bazel是从谷歌开源的自动化构建工具,用于编译应用。

项目空间(worksapce): Bazel的基本概念,包含了编译一个软件所需要的源代码以及输出编译结果的软连接(symbolic link)地址。项目空间对应的文件夹是项目的根目录,需要有:

​ WORKSPACE文件:定义了对外部资源的依赖关系,可为空文件;

​ BULID文件:通过它找到需要编译的目标,该文件中指定可每一个编译目标的输入,输出和编译方式。Bazel的编译方式是事先定义好的,比如Python支持的编译方式只有三种:py_binary(将Python程序编译为可执行文件), py_library(将Python编译为库函数供供py_test或py_binary调用)和py_test(编译Python测试程序)。

​ 下面使用一个简单样例来说明Bazel的工作,如下项目空间有4个文件:

-rw-rw-r-- root root 208       BULID
-rw-rw-r-- root root 48        hello_lib.py
-rw-rw-r-- root root 47        hell0_main.py
-rw-rw-r-- root root 0         WORKSPACE
#详细内容如下:
#hellp_lib.py
def print_hello_world():
    print("Hello World")

#hello_main.py
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: TensorFlow 是一个机器学习框架,主要用于构建和训练各种深度学习模型。TensorFlow 的核心是一个计算图,它表示了机器学习模型的计算流程。在这个计算图中,节点表示操作,边表示数据流动。 TensorFlow 的搭建原理可以分为以下几个部分: 1. 图的构建 在 TensorFlow 中,我们首先需要定义一个计算图,也就是把所有的计算操作都放在这个计算图中。在构建图时,我们可以使用 TensorFlow 提供的各种 API 来创建各种不同的节点,比如变量、占位符、常量、操作等等。这些节点可以相互连接,构成一个完整的计算图。 2. 数据流动 在 TensorFlow 中,张量(Tensor)是所有数据的基本单位,它代表了一个多维数组。张量可以被看作是节点之间的数据流,它们在图中沿着边流动,经过各种操作的处理,最终输出一个结果。这个结果也是一个张量,可以继续被用于下一步的计算。 3. 会话运行 在 TensorFlow 中,我们需要使用一个会话(Session)来执行计算图中的各个节点。会话负责管理计算资源,以及处理张量的计算和存储。在会话中,我们可以运行某些节点并获取它们的输出结果。可以使用会话中的 run() 函数来运行节点,也可以使用 eval() 函数来获取节点的值。 4. 模型保存和加载 在训练完成后,我们需要将模型保存下来以便之后使用。TensorFlow 提供了一些函数来保存和加载模型。我们可以使用 tf.train.Saver 类来保存整个模型或者某些节点的值。保存的模型可以在之后的计算中重复使用,也可以用来进行推理或者部署。 总的来说,TensorFlow 的搭建原理主要是基于图的计算模型,通过构建计算图来描述深度学习模型的计算流程,通过数据流动来传递各种张量,在会话中执行节点并获取结果。同时,TensorFlow 还提供了各种工具来辅助模型的保存和加载,方便我们对模型进行部署和应用。 ### 回答2: TensorFlow是一个开源的机器学习框架,由Google开发和维护。它被广泛应用于深度学习、神经网络等领域。TensorFlow提供了一个灵活且高效的运算库,可以在不同的硬件平台上运行,括CPU、GPU和TPU。 TensorFlow的搭建原理主要括以下几个方面: 1. 数据流图:TensorFlow使用数据流图来描述计算任务。数据流图是一个有向无环图,其中节点表示操作(例如变量、常量、卷积、池化等),边表示数据流动的方向。数据从图的输入节点流经不同的操作节点,最终输出到图的输出节点。 2. 张量:在TensorFlow中,所有的数据都以张量的形式进行存储和操作。张量是多维数组的一种概念,在数据流图中扮演重要的角色。张量具有固定的数据类型(如float、int等)和形状(如[batch_size, height, width, channels])。 3. 变量:变量是在模型训练过程中需要学习和更新的参数。在TensorFlow中,通过tf.Variable()函数创建变量,并使用优化算法(如梯度下降)来更新变量的值。 4. 会话:TensorFlow使用会话(Session)来执行数据流图中的操作。会话中可以指定要在特定硬件上运行的操作,并且可以进行内存管理和优化。通过调用session.run()函数,可以启动数据流图的执行过程。 5. 运算:TensorFlow提供了丰富的运算操作,括数学运算、数组操作、矩阵运算、神经网络等。用户可以根据需求选择合适的运算操作,并在数据流图中组合这些操作。 6. 分布式计算:TensorFlow支持分布式计算,允许在多台设备上并行执行图中的操作。通过指定不同的设备和通信方式,可以有效地利用硬件资源,加速计算过程。 总而言之,TensorFlow的搭建原理括了数据流图的描述、张量的管理、变量的更新、会话的执行和分布式计算等方面。它为用户提供了高效、灵活的机器学习框架,帮助实现复杂的计算任务。 ### 回答3: TensorFlow(简称tf)是一个开源的机器学习框架,由Google公司于2015年发布。它的设计灵感来源于神经网络在矩阵运算中的处理方式。TensorFlow提供了一种高效灵活的方式来构建和部署各种机器学习模型。 TensorFlow的核心原理是计算图(computational graph)。计算图是由一系列的节点(节点表示操作,也称为算子)和边(边表示数据流,也称为张量)组成的有向无环图。图中的每个节点都接受输入张量和执行计算,然后将结果输出到下一个节点。这样的设计使得TensorFlow具有高效的并行计算能力,因为它可以对图中的节点进行并行化操作。 TensorFlow的搭建主要括三个步骤:定义计算图、创建会话、执行计算。首先,我们需要使用TensorFlow的API来创建计算图。API中含了丰富的操作符,例如加法、乘法、卷积等,还有一些控制流的操作符,例如循环和分支。我们可以按照自己的需求来组合这些操作符,构建复杂的计算图。 接下来,我们需要创建一个会话来执行计算图中的操作。会话是与TensorFlow的运行环境进行交互的接口。通过会话,我们可以将计算图中的操作提交给TensorFlow去执行,并获取计算结果。会话会负责管理计算图中的资源,并能够将计算过程分配到不同的设备上(例如CPU、GPU)。 最后,我们可以通过执行计算操作,得到计算结果。TensorFlow采用延迟计算模式,即只有当我们需要获取某个计算结果时,才会执行相应的操作。这样可以降低不必要的计算开销,提高运行效率。另外,TensorFlow还支持自动求导功能,能够方便地计算梯度并进行优化。这使得TensorFlow成为了训练神经网络模型的首选工具之一。 总结起来,TensorFlow的搭建原理是通过计算图来描述计算过程,使用会话来执行计算操作,并通过延迟计算和自动求导功能来提高效率,满足各种机器学习模型的需求。通过TensorFlow,我们可以方便地构建和部署复杂的机器学习模型,从而实现各种应用,如图像识别、语音识别、自然语言处理等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值