tenaorflow函数(1)
TensorFlow 将图形定义转换成分布式执行的操作, 以充分利用可用的计算资源(如 CPU 或 GPU。一般你不需要显式指定使用 CPU 还是 GPU, TensorFlow 能自动检测。如果检测到 GPU, TensorFlow 会尽可能地利用找到的第一个 GPU 来执行操作。
操作组 | 操作 |
---|---|
Building Graphs | Core graph data structures,Tensor types,Utility functions |
Inputs and Readers | Placeholders,Readers,Converting,Queues,Input pipeline |
1、建立图(Building Graphs)
1.1 核心图的数据结构(Core graph data structures)
tf.Graph
操作 | 描述 |
---|---|
class tf.Graph | tensorflow中的计算以图数据流的方式表示 一个图包含一系列表示计算单元的操作对象 以及在图中流动的数据单元以tensor对象表现 |
tf.Graph.__init__() | 建立一个空图 |
tf.Graph.as_default() | 一个将某图设置为默认图,并返回一个上下文管理器 如果不显式添加一个默认图,系统会自动设置一个全局的默认图。 所设置的默认图,在模块范围内所定义的节点都将默认加入默认图中 |
tf.Graph.as_graph_def (from_version=None, add_shapes=False) |
返回一个图的序列化的GraphDef表示 序列化的GraphDef可以导入至另一个图中(使用 import_graph_def()) 或者使用C++ Session API |
tf.Graph.finalize() | 完成图的构建,即将其设置为只读模式 |
tf.Graph.finalized | 返回True,如果图被完成 |
tf.Graph.control_dependencies(control_inputs) | 定义一个控制依赖,并返回一个上下文管理器 with g.control_dependencies([a, b, c]): # `d` 和 `e` 将在 `a`, `b`, 和`c`执行完之后运行. d = … e = … |
tf.Graph.device(device_name_or_function) | 定义运行图所使用的设备,并返回一个上下文管理器with g.device('/gpu:0'): ... with g.device('/cpu:0'): ... |
tf.Graph.name_scope(name) | 为节点创建层次化的名称,并返回一个上下文管理器 |
tf.Graph.add_to_collection(name, value) | 将value以name的名称存储在收集器(collection)中 |
tf.Graph.get_collection(name, scope=None) | 根据name返回一个收集器中所收集的值的列表 |
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) | 根据名称返回tensor数据 |
tf.Graph.get_operations() | 返回图中的操作节点列表 |
tf.Graph.gradient_override_map(op_type_map) | 用于覆盖梯度函数的上下文管理器 |
tf.Operation
操作 |
描述 |
class tf.Operation |
代表图中的一个节点,用于计算tensors数据 |
tf.Operation.name |
操作节点(op)的名称 |
tf.Operation.type |
操作节点(op)的类型,比如”MatMul” |
tf.Operation.inputs |
操作节点的输入与输出 |
tf.Operation.control_inputs |
操作节点的依赖 |
tf.Operation.run(feed_dict=None, |
在会话(Session)中运行该操作 |
tf.Operation.get_attr(name) |
获取op的属性值 |
tf.Tensor
操作 |
描述 |
class tf.Tensor |
表示一个由操作节点op产生的值, |
tf.Tensor.dtype |
tensor中数据类型 |
tf.Tensor.name |
该tensor名称 |
tf.Tensor.value_index |
该tensor输出外op的index |
tf.Tensor.graph |
该tensor所处在的图 |
tf.Tensor.op |
产生该tensor的op |
tf.Tensor.consumers() |
返回使用该tensor的op列表 |
tf.Tensor.eval(feed_dict=None, |
在会话中求tensor的值 |
tf.Tensor.get_shape() |
返回用于表示tensor的shape的类TensorShape |
tf.Tensor.set_shape(shape) |
更新tensor的shape |
tf.Tensor.device |
设置计算该tensor的设备 |
1.2 tensor类型(Tensor types)
tf.DType
操作 |
描述 |
class tf.DType |
数据类型主要包含 |
tf.DType.is_compatible_with(other) |
判断other的数据类型是否将转变为该DType |
tf.DType.name |
数据类型名称 |
tf.DType.base_dtype |
返回该DType的基础DType,而非参考的数据类型(non-reference) |
tf.DType.as_ref |
返回一个基于DType的参考数据类型 |
tf.DType.is_floating |
判断是否为浮点类型 |
tf.DType.is_complex |
判断是否为复数 |
tf.DType.is_integer |
判断是否为整数 |
tf.DType.is_unsigned |
判断是否为无符号型数据 |
tf.DType.as_numpy_dtype |
返回一个基于DType的numpy.dtype类型 |
tf.DType.max |
返回这种数据类型能表示的最大值及其最小值 |
tf.as_dtype(type_value) |
返回由type_value转变得的相应tf数据类型 |
1.3 通用函数(Utility functions)
操作 |
描述 |
tf.device(device_name_or_function) |
基于默认的图,其功能便为Graph.device() |
tf.container(container_name) |
基于默认的图,其功能便为Graph.container() |
tf.name_scope(name) |
基于默认的图,其功能便为 Graph.name_scope() |
tf.control_dependencies(control_inputs) |
基于默认的图,其功能便为Graph.control_dependencies() |
tf.convert_to_tensor |
将value转变为tensor数据类型 |
tf.get_default_graph() |
返回返回当前线程的默认图 |
tf.reset_default_graph() |
清除默认图的堆栈,并设置全局图为默认图 |
tf.import_graph_def(graph_def, |
将graph_def的图导入到python中 |
1.4 图收集(Graph collections)
操作 |
描述 |
tf.add_to_collection(name, value) |
基于默认的图,其功能便为Graph.add_to_collection() |
tf.get_collection(key, scope=None) |
基于默认的图,其功能便为Graph.get_collection() |
1.5 定义新操作节点(Defining new operations)
tf.RegisterGradient
操作 |
描述 |
class tf.RegisterGradient |
返回一个用于寄存op类型的梯度函数的装饰器 |
tf.NoGradient(op_type) |
设置操作节点类型op_type的节点没有指定的梯度 |
class tf.RegisterShape |
返回一个用于寄存op类型的shape函数的装饰器 |
class tf.TensorShape |
表示tensor的shape |
tf.TensorShape.merge_with(other) |
与other合并shape信息,返回一个TensorShape类 |
tf.TensorShape.concatenate(other) |
与other的维度相连结 |
tf.TensorShape.ndims |
返回tensor的rank |
tf.TensorShape.dims |
返回tensor的维度 |
tf.TensorShape.as_list() |
以list的形式返回tensor的shape |
tf.TensorShape.is_compatible_with(other) |
判断shape是否为兼容 |
class tf.Dimension |
|
tf.Dimension.is_compatible_with(other) |
判断dims是否为兼容 |
tf.Dimension.merge_with(other) |
与other合并dims信息 |
tf.op_scope(values, name, |
在python定义op时,返回一个上下文管理器 |
2、输入和读取器(Inputs and Readers)
2.1 占位符(Placeholders)
tf提供一种占位符操作,在执行时需要为其提供数据data。
操作 |
描述 |
tf.placeholder(dtype, shape=None, name=None) |
为一个tensor插入一个占位符 |
tf.placeholder_with_default(input, |
当输出没有fed时,input通过一个占位符op |
tf.sparse_placeholder(dtype, |
为一个稀疏tensor插入一个占位符 |
2.2 读取器(Readers)
tf提供一系列读取各种数据格式的类。对于多文件输入,可以使用函数tf.train.string_input_producer,该函数将创建一个保持文件的FIFO队列,以供reader使用。或者如果输入的这些文件名有相雷同的字符串,也可以使用函数tf.train.match_filenames_once。
操作 |
描述 |
class tf.ReaderBase |
不同的读取器类型的基本类 |
tf.ReaderBase.read(queue, name=None) |
返回下一个记录对(key, value),queue为tf文件队列FIFOQueue |
tf.ReaderBase.read_up_to(queue, num_records, name=None) |
返回reader产生的num_records对(key, value) |
tf.ReaderBase.reader_ref |
返回应用在该reader上的Op |
tf.ReaderBase.reset(name=None) |
恢复reader为初始状态 |
tf.ReaderBase.restore_state(state, name=None) |
恢复reader为之前的保存状态state |
tf.ReaderBase.serialize_state(name=None) |
返回一个reader解码后产生的字符串tansor |
class tf.TextLineReader |
|
tf.TextLineReader.num_records_produced(name=None) |
返回reader已经产生的记录(records )数目 |
tf.TextLineReader.num_work_units_completed(name=None) |
返回该reader已经完成的处理的work数目 |
tf.TextLineReader.read(queue, name=None) |
返回reader所产生的下一个记录对 (key, value),该reader可以限定新产生输出的行数 |
tf.TextLineReader.reader_ref |
返回应用在该reader上的Op |
tf.TextLineReader.reset(name=None) |
恢复reader为初始状态 |
tf.TextLineReader.restore_state(state, name=None) |
恢复reader为之前的保存状态state |
tf.TextLineReader.serialize_state(name=None) |
返回一个reader解码后产生的字符串tansor |
class tf.WholeFileReader |
一个阅读器,读取整个文件,返回文件名称key,以及文件中所有的内容value,该类的方法同上,不赘述 |
class tf.IdentityReader |
一个reader,以key和value的形式,输出一个work队列。该类其他方法基本同上 |
class tf.TFRecordReader |
读取TFRecord格式文件的reader。该类其他方法基本同上 |
class tf.FixedLengthRecordReader |
输出 |
2.3 数据转换(Converting)
tf提供一系列方法将各种格式数据转换为tensor表示。
操作 |
描述 |
tf.decode_csv(records, record_defaults, |
将csv转换为tensor,与tf.TextLineReader搭配使用 |
tf.decode_raw(bytes, out_type, |
将bytes转换为一个数字向量表示,bytes为一个字符串类型的tensor |
选取与要输入的文件格式相匹配的reader,并将文件队列提供给reader的读方法( read method)。读方法将返回文件唯一标识的key,以及一个记录(record)(有助于对出现一些另类的records时debug),以及一个标量的字符串值。再使用一个(或多个)解码器(decoder) 或转换操作(conversion ops)将字符串转换为tensor类型。
2.4 Example protocol buffer
提供了一些Example protocol buffers,tf所推荐的用于训练样本的数据格式,它们包含特征信息,详情可见。
这是一种与前述将手上现有的各种数据类型转换为支持的格式的方法,这种方法更容易将网络结构与数据集融合或匹配。这种tensorflow所推荐的数据格式是一个包含tf.train.Example protocol buffers (包含特征Features域)的TFRecords文件。
1、获取这种格式的文件方式为,首先将一般的数据格式填入Example protocol buffer中,再将 protocol buffer序列化为一个字符串,然后使用tf.python_io.TFRecordWriter类的相关方法将字符串写入一个TFRecords文件中,参见MNIST例子,将MNIST 数据转换为该类型数据。
2、读取TFRecords格式文件的方法为,使用tf.TFRecordReader读取器和tf.parse_single_example解码器。parse_single_example操作将 example protocol buffers解码为tensor形式。参见MNIST例子
操作 |
描述 |
class tf.VarLenFeature |
解析变长的输入特征feature相关配置 |
class tf.FixedLenFeature |
解析定长的输入特征feature相关配置 |
class tf.FixedLenSequenceFeature |
序列项目中的稠密(dense )输入特征的相关配置 |
tf.parse_example(serialized, features, |
将一组Example protos解析为tensor的字典形式 |
tf.parse_single_example(serialized, |
解析一个单独的Example proto,与tf.parse_example方法雷同 |
tf.decode_json_example(json_examples, |
将JSON编码的样本记录转换为二进制protocol |
2.5 队列(Queues)
tensorflow提供了几个队列应用,用来将tf计算图与tensors的阶段流水组织到一起。队列是使用tensorflow计算的一个强大的机制,正如其他Tensorflow的元素一样,一个队列也是tf图中的一个节点(node),它是一个有状态的node,就像一个变量:其他节点可以改变其内容。
我们来看一个简单的例子,如下gif图,我们将创建一个先入先出队列(FIFOQueue)并且将值全设为0,然后我们构建一个图以获取队列出来的元素,对该元素加1操作,并将结果再放入队列末尾。渐渐地,队列中的数字便增加。
操作 |
描述 |
class tf.QueueBase |
基本的队列应用类.队列(queue)是一种数据结构, |
tf.QueueBase.enqueue(vals, name=None) |
将一个元素编入该队列中。如果在执行该操作时队列已满, |
tf.QueueBase.enqueue_many(vals, |
将零个或多个元素编入该队列中 |
tf.QueueBase.dequeue(name=None) |
将元素从队列中移出。如果在执行该操作时队列已空, |
tf.QueueBase.dequeue_many(n, |
将一个或多个元素从队列中移出 |
tf.QueueBase.size(name=None) |
计算队列中的元素个数 |
tf.QueueBase.close |
关闭该队列 |
f.QueueBase.dequeue_up_to(n, |
从该队列中移出n个元素并将之连接 |
tf.QueueBase.dtypes |
列出组成元素的数据类型 |
tf.QueueBase.from_list(index, queues) |
根据queues[index]的参考队列创建一个队列 |
tf.QueueBase.name |
返回最队列下面元素的名称 |
tf.QueueBase.names |
返回队列每一个组成部分的名称 |
class tf.FIFOQueue |
在出列时依照先入先出顺序,其他方法与tf.QueueBase雷同 |
class tf.PaddingFIFOQueue |
一个FIFOQueue ,同时根据padding支持batching变长的tensor |
class tf.RandomShuffleQueue |
该队列将随机元素出列,其他方法与tf.QueueBase雷同 |
2.6 文件系统的处理(Dealing with the filesystem)
操作 |
描述 |
tf.matching_files(pattern, name=None) |
返回与pattern匹配模式的文件名称 |
tf.read_file(filename, name=None) |
读取并输出输入文件的整个内容 |
2.7 输入管道(Input pipeline)
用于设置输入预取数的管道TF函数,函数 “producer”添加一个队列至图中,同时一个相应用于运行队列中子图(subgraph)的QueueRunner
操作 |
描述 |
tf.train.match_filenames_once(pattern, name=None) |
保存与pattern的文件列表 |
tf.train.limit_epochs(tensor, num_epochs=None, name=None) |
返回一个num_epochs次数,然后报告OutOfRange错误 |
tf.train.input_producer(input_tensor, element_shape=None, |
为一个输入管道输出input_tensor中的多行至一个队列中 |
tf.train.range_input_producer(limit, |
产生一个从1至limit-1的整数至队列中 |
tf.train.slice_input_producer(tensor_list, |
对tensor_list中的每一个tensor切片 |
tf.train.string_input_producer(string_tensor, |
为一个输入管道输出一组字符串(比如文件名)至队列中 |
2.8 在输入管道末端批量打包(Batching at the end of an input pipeline)
该相关函数增添一个队列至图中以将数据一样本打包为batch。它们也会添加 一个QueueRunner,以便执行的已经被填满队列的子图
操作 |
描述 |
tf.train.batch(tensors, batch_size, num_threads=1, |
在输入的tensors中创建一些tensor数据格式的batch, |
tf.train.batch_join(tensors_list, |
将一个tensors的列表添加至一个队列中以创建样本的batches |
tf.train.shuffle_batch(tensors, |
使用随机乱序的方法创建batches |
tf.train.shuffle_batch_join(tensors_list, |
随机乱序的tensors创建batches, |
tenaorflow函数(1)的更多相关文章
- Python 小而美的函数
python提供了一些有趣且实用的函数,如any all zip,这些函数能够大幅简化我们得代码,可以更优雅的处理可迭代的对象,同时使用的时候也得注意一些情况 any any(iterable) ...
- 探究javascript对象和数组的异同,及函数变量缓存技巧
javascript中最经典也最受非议的一句话就是:javascript中一切皆是对象.这篇重点要提到的,就是任何jser都不陌生的Object和Array. 有段时间曾经很诧异,到底两种数据类型用来 ...
- JavaScript权威指南 - 函数
函数本身就是一段JavaScript代码,定义一次但可能被调用任意次.如果函数挂载在一个对象上,作为对象的一个属性,通常这种函数被称作对象的方法.用于初始化一个新创建的对象的函数被称作构造函数. 相对 ...
- C++对C的函数拓展
一,内联函数 1.内联函数的概念 C++中的const常量可以用来代替宏常数的定义,例如:用const int a = 10来替换# define a 10.那么C++中是否有什么解决方案来替代宏代码 ...
- 菜鸟Python学习笔记第一天:关于一些函数库的使用
2017年1月3日 星期二 大一学习一门新的计算机语言真的很难,有时候连函数拼写出错查错都能查半天,没办法,谁让我英语太渣. 关于计算机语言的学习我想还是从C语言学习开始为好,Python有很多语言的 ...
- javascript中的this与函数讲解
前言 javascript中没有块级作用域(es6以前),javascript中作用域分为函数作用域和全局作用域.并且,大家可以认为全局作用域其实就是Window函数的函数作用域,我们编写的js代码, ...
- 复杂的 Hash 函数组合有意义吗?
很久以前看到一篇文章,讲某个大网站储存用户口令时,会经过十分复杂的处理.怎么个复杂记不得了,大概就是先 Hash,结果加上一些特殊字符再 Hash,结果再加上些字符.再倒序.再怎么怎么的.再 Hash ...
- JS核心系列:浅谈函数的作用域
一.作用域(scope) 所谓作用域就是:变量在声明它们的函数体以及这个函数体嵌套的任意函数体内都是有定义的. function scope(){ var foo = "global&quo ...
- C++中的时间函数
C++获取时间函数众多,何时该用什么函数,拿到的是什么时间?该怎么用?很多人都会混淆. 本文是本人经历了几款游戏客户端和服务器开发后,对游戏中时间获取的一点总结. 最早学习游戏客户端时,为了获取最精确 ...
随机推荐
- DataGridView列标题居中,内容居中
//列标题居中 dataGridView1.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleC ...
- Chrome Ajax 跨域设置
一.前言 web 开发中 Ajax 是十分常见的技术,但是在前后端使用接口对接的调试过程中不可避免会碰到跨域问题.今天我给大家介绍一个十分简单有效的方法. 跨域经典错误 二.Chrome 跨域设置 首 ...
- 【BZOJ1488】[HNOI2009]图的同构(Burside引理,Polya定理)
[BZOJ1488][HNOI2009]图的同构(Burside引理,Polya定理) 题面 BZOJ 洛谷 题解 求本质不同的方案数,很明显就是群论这套理论了. 置换一共有\(n!\)个,考虑如何对 ...
- dp乱写1:状态压缩dp(状压dp)炮兵阵地
https://www.luogu.org/problem/show?pid=2704 题意: 炮兵在地图上的摆放位子只能在平地('P') 炮兵可以攻击上下左右各两格的格子: 而高原('H')上炮兵能 ...
- std::bind常见的坑
http://note.youdao.com/noteshare?id=bce9cdea8e94501186b5ba3026af685f
- Elasticsearch 5.0 安装 Search Guard 5 插件
一.Search Guard 简介 Search Guard 是 Elasticsearch 的安全插件.它为后端系统(如LDAP或Kerberos)提供身份验证和授权,并向Elasticsearc ...
- Linux系统下/tmp目录文件重启后自动删除,不重启自动删除10天前的/TMP的文件(转)
/tmp目录文件重启后自动删除现在知道有ubuntu和solaris系统source:http://blog.chinaunix.net/uid-26212859-id-3567875.html经常会 ...
- saltstack主机管理项目【day23】:主机管理项目需求分析-设计
本节内容 一. 主机管理项目需求分析 二 .主机管理项目架构设计 三.主机管理项目初始构建 四. 主机管理项目编主机分发器 一. 主机管理项目需求分析 场景:我现在又一台裸机要实现一下人物 配置管理: ...
- Why is my Spring @Autowired field null?
spring有@Autowired 空指针异常 https://stackoverflow.com/questions/19896870/why-is-my-spring-autowired-fiel ...
- 数学:拓展Lucas定理
拓展Lucas定理解决大组合数取模并且模数为任意数的情况 大概的思路是把模数用唯一分解定理拆开之后然后去做 然后要解决的一个子问题是求模质数的k次方 将分母部分转化成逆元再去做就好了 这里贴一份别人的 ...