tensorflow API简单整理(四、Graph,Operation&Tensor)
2017-07-15 12:49
513 查看
1.4BuildingGraph
tensorflow采用符号式编程,相对于一帮的命令式编程(c,java)来说,tensorflow将程序编写分为两个部分,一部分是构建图,另一部分是运行这个图。在构建图中可以使用变量、常量、控制流等各种方法。除此之外,还有一些图本身的属性和适合的方法,本节主要介绍这部分的内容。
从图的角度来说,api分为Coregraphdatastructures,tensorftype,utilityfunctions,graphcollections,definingnewoperations这几个部分,下面分别进行介绍。
1.4.1
Coregraphdatastructures部分主要包括graph,Operation,Tensor三个部分,分别代表图以及图中的操作和tensor两种主要类型。
1.4.1.1tf.Graph
tf.Graph表示tensorflow的一个类,新建一个Graph即表示一个图对象,其新建函数为tf.Graph.init(),不需要任何参数。主要有以下几种函数及变量。
tf.Graph.as_default()将当前图设置为默认图。新建一个tensorflow程序时,会自动启动一个默认图,大部分时候不需要进一步新增。如果需要新增,一般采用withtf.Graph().as_default()asg:这样一次性新建图并设置为默认。
tf.Graph.finalizer()将图设置为不可变的状态,即不可增加和修改。对应tf.Graph.finalized属性,返回是否可变的bool值
tf.Graph.control_dependencies(control_inputs)通过图来对tensor之间的依赖关系进行设置,control_inputs为需要在这个之前计算的变量或操作。一般采用withg.control_dependencies(a,b):在这个with语句包含的范围之内操作将在control_inputs计算完成之后再进行计算。
tf.Graph.device(device_nameorfunction)运算选择计算设备(CPU或GPU),一般有两种使用方式withg.device("/gpu:0"):意味着with包含的所有计算语句都是采用第1个GPU进行计算。或者较为复杂的function方式,这里还是用代码说明吧.
以上代码,如果是matmul计算,则采用GPU,其余的采用CPU
tf.Graph.name_scope(name)这个函数返回一个graph内部的具有层级结构的scope,能对操作和变量进行空间限制。通过对相关博客以及参考文档的学习,name_scope主要面对于op进行操作,对变量的范围没有影响。变量应该使用variable_scope进行操作。
tf.Graph.add_to_colletion(name,value)类似的tf.Graph.get_collection(name,scope=Npne)分别是将变量增加到某个集合中或者从某个集合中取变量。
tf.Graph.as_graph_element(obj,allow_tensor=True,allow_operation=True)字面意思是返回一个图中与obj相关联的对象,为一个操作节点或者tensor数据,但是我没有搞清楚怎么用以及在什么地方用。
tf.Graph.get_operation_by_name(name)/tf.Graph.get_tensor_by_name(name)/tf.Graph.get_operations()三个类似的函数,分别返回op,tensor以及tensor列表。
tf.Graph.get_default_device()获取默认的计算设备
tf.Graph.gradient_override_map(op_type_map)该graph的梯度覆盖的上下文管理器,没有搞明白。
graph主要就是以上那些,还有几个函数,api文档上都说调用的不多,我就不写了。
1.4.1.2tf.Operation
Operation是teansorflow中操作节点的抽象化,有0个或多个输入和0个或多个输出,在运行后使用tf.get_default_session().run(op)进行运行,或者op.run(),这是前面的简化调用方式。主要属性与方法如下:
tf.Operation.name获取名称
tf.Operation.type获取属性
tf.Operation.inputs获取输入值
tf.Operation.control_inputs获取输入依赖值
tf.Operation.outputs获取输出值
tf.Operation.device获取操作设备
tf.Operation.graph获取graph
tf.Operation.run(feed_dict=None,session=None)如果op传入的是placeholder对象,则需要使用feed_dict参数进行传入。
tf.Operation.get_attr(name)获取op该属性的对应值。
老规矩,还有些函数或者属性,但是我觉得用的真的太少,就不管了。
1.4.1.3tf.Tensor
tensor代表一个operation的结果。从tensorflow的实际运行来说,tensor是operation一个输出的句柄,但是tensor所引用的并不持有具体的值,而是保持一个计算过程,在session调用的时候,可以使用这个计算过程来得到最终的结果。在pythonapi中主要由两方面基本的内容:
(1)一个tensor可以被传递到另外一个operation,从而形成最终的数据流。这样,session中只需要对最后一个计算进行编码即可。
(2)在session调用最终的图之后,可以使用session.run()或者t.eval()对tensor的值进行计算。
常用的属性和函数如下:
tf.Tensor.dtype数据类型
tf.Tensor.nametensor名称
tf.Tensor.value_index在input中的index
tf.Tensor.graph返回图名
tf.Tensor.op返回操作名
tf.Tensor.consumers()返回使用了这个tensorflow的op列表
tf.Tensor.eval(feed_dict=None,session=None)需要在session中使用,可以事先使用placeholder
tf.Tensor.get_shape()获取形状
tf.Tensor.set_shape(shape)设置形状
tf.Tensor.device获取计算的设备
tensorflow采用符号式编程,相对于一帮的命令式编程(c,java)来说,tensorflow将程序编写分为两个部分,一部分是构建图,另一部分是运行这个图。在构建图中可以使用变量、常量、控制流等各种方法。除此之外,还有一些图本身的属性和适合的方法,本节主要介绍这部分的内容。
从图的角度来说,api分为Coregraphdatastructures,tensorftype,utilityfunctions,graphcollections,definingnewoperations这几个部分,下面分别进行介绍。
1.4.1
Coregraphdatastructures部分主要包括graph,Operation,Tensor三个部分,分别代表图以及图中的操作和tensor两种主要类型。
1.4.1.1tf.Graph
tf.Graph表示tensorflow的一个类,新建一个Graph即表示一个图对象,其新建函数为tf.Graph.init(),不需要任何参数。主要有以下几种函数及变量。
tf.Graph.as_default()将当前图设置为默认图。新建一个tensorflow程序时,会自动启动一个默认图,大部分时候不需要进一步新增。如果需要新增,一般采用withtf.Graph().as_default()asg:这样一次性新建图并设置为默认。
tf.Graph.finalizer()将图设置为不可变的状态,即不可增加和修改。对应tf.Graph.finalized属性,返回是否可变的bool值
tf.Graph.control_dependencies(control_inputs)通过图来对tensor之间的依赖关系进行设置,control_inputs为需要在这个之前计算的变量或操作。一般采用withg.control_dependencies(a,b):在这个with语句包含的范围之内操作将在control_inputs计算完成之后再进行计算。
tf.Graph.device(device_nameorfunction)运算选择计算设备(CPU或GPU),一般有两种使用方式withg.device("/gpu:0"):意味着with包含的所有计算语句都是采用第1个GPU进行计算。或者较为复杂的function方式,这里还是用代码说明吧.
defmatmul_on_gpu(n):
ifn.type=="MatMul":
return"/gpu:0"
else:
return"/cpu:0"
withg.device(matmul_on_gpu):
以上代码,如果是matmul计算,则采用GPU,其余的采用CPU
tf.Graph.name_scope(name)这个函数返回一个graph内部的具有层级结构的scope,能对操作和变量进行空间限制。通过对相关博客以及参考文档的学习,name_scope主要面对于op进行操作,对变量的范围没有影响。变量应该使用variable_scope进行操作。
tf.Graph.add_to_colletion(name,value)类似的tf.Graph.get_collection(name,scope=Npne)分别是将变量增加到某个集合中或者从某个集合中取变量。
tf.Graph.as_graph_element(obj,allow_tensor=True,allow_operation=True)字面意思是返回一个图中与obj相关联的对象,为一个操作节点或者tensor数据,但是我没有搞清楚怎么用以及在什么地方用。
tf.Graph.get_operation_by_name(name)/tf.Graph.get_tensor_by_name(name)/tf.Graph.get_operations()三个类似的函数,分别返回op,tensor以及tensor列表。
tf.Graph.get_default_device()获取默认的计算设备
tf.Graph.gradient_override_map(op_type_map)该graph的梯度覆盖的上下文管理器,没有搞明白。
graph主要就是以上那些,还有几个函数,api文档上都说调用的不多,我就不写了。
1.4.1.2tf.Operation
Operation是teansorflow中操作节点的抽象化,有0个或多个输入和0个或多个输出,在运行后使用tf.get_default_session().run(op)进行运行,或者op.run(),这是前面的简化调用方式。主要属性与方法如下:
tf.Operation.name获取名称
tf.Operation.type获取属性
tf.Operation.inputs获取输入值
tf.Operation.control_inputs获取输入依赖值
tf.Operation.outputs获取输出值
tf.Operation.device获取操作设备
tf.Operation.graph获取graph
tf.Operation.run(feed_dict=None,session=None)如果op传入的是placeholder对象,则需要使用feed_dict参数进行传入。
tf.Operation.get_attr(name)获取op该属性的对应值。
老规矩,还有些函数或者属性,但是我觉得用的真的太少,就不管了。
1.4.1.3tf.Tensor
tensor代表一个operation的结果。从tensorflow的实际运行来说,tensor是operation一个输出的句柄,但是tensor所引用的并不持有具体的值,而是保持一个计算过程,在session调用的时候,可以使用这个计算过程来得到最终的结果。在pythonapi中主要由两方面基本的内容:
(1)一个tensor可以被传递到另外一个operation,从而形成最终的数据流。这样,session中只需要对最后一个计算进行编码即可。
(2)在session调用最终的图之后,可以使用session.run()或者t.eval()对tensor的值进行计算。
常用的属性和函数如下:
tf.Tensor.dtype数据类型
tf.Tensor.nametensor名称
tf.Tensor.value_index在input中的index
tf.Tensor.graph返回图名
tf.Tensor.op返回操作名
tf.Tensor.consumers()返回使用了这个tensorflow的op列表
tf.Tensor.eval(feed_dict=None,session=None)需要在session中使用,可以事先使用placeholder
tf.Tensor.get_shape()获取形状
tf.Tensor.set_shape(shape)设置形状
tf.Tensor.device获取计算的设备
相关文章推荐
- tensorflow API简单整理(一、常量与变量基础)
- tensorflow API简单整理(二、变量共享)
- tensorflow API简单整理(三、控制流)
- Tensorflow ConfigProto & inter_/intra_op_parallelism_threads 整理
- Loading a TensorFlow graph with the C++ API
- 简单的线性回归问题-TensorFlow+MATLAB·
- C++ API载入tensorflow graph
- libvlc外部api的简单整理
- R已经可以进行深度学习!!!tensorflow&keras
- 对于谷歌开源的TensorFlow Object Detection API视频物体识别系统实现教程
- 关于LittleSis网站数据API的简单整理
- 目标检测 - Tensorflow Object Detection API
- tensorflow object detection API 使用记录2
- libvlc外部api的简单整理
- tensorflow API: tf.unsorted_segment_sum
- tensorflow object detection API 使用记录1
- TensorFlow学习——Tensorflow Object Detection API(win10,CPU)
- c语言面试题重点整理·简单编程类
- win10下用tensorflow object detection API 验证时报No module named 'object_detection'
- 【tensorflow】打印Tensorflow graph中的所有变量--tf.trainable_variables()