【Tensorflow】Tensorflow一些数据IO、图的运行相关函数

来源:互联网 发布:淘宝客服个人简历模板 编辑:程序博客网 时间:2024/05/29 16:25

摘要:本系列主要对tf的一些常用概念与方法进行描述。本文主要针对tensorflow的数据IO、图的运行等相关函数进行讲解。为‘Tensorflow一些常用基本概念与函数’系列之三。

1、序言

本文所讲的内容主要为以下相关函数:

操作组操作Data IO (Python functions)TFRecordWrite,rtf_record_iteratorRunning GraphsSession management,Error classes

2、tf函数

2.1 数据IO {Data IO (Python functions)}

一个TFRecords 文件为一个字符串序列。这种格式并非随机获取,它比较适合大规模的数据流,而不太适合需要快速分区或其他非序列获取方式。

数据IO {Data IO (Python functions)}

操作描述class tf.python_io.TFRecordWriter一个用于将记录(records)写入TFRecords文件的类tf.python_io.TFRecordWriter.__init__(path, options=None)打开文件路径,并创建一个TFRecordWriter以供写入tf.python_io.TFRecordWriter.write(record)将一个字符串records写入文件中tf.python_io.TFRecordWriter.close()关闭文件tf.python_io.tf_record_iterator(path, options=None)从TFRecords文件中读取记录的迭代器

2.2 运行图(Running Graphs)

会话管理 (Session management)

操作描述class tf.Session运行TF操作的类,
一个Session对象将操作节点op封装在一定的环境内运行,
同时tensor对象将被计算求值tf.Session.__init__(target=”, graph=None, config=None)创建一个新的会话tf.Session.run(fetches, feed_dict=None, 
options=None, run_metadata=None)运行fetches中的操作节点并求其值tf.Session.close()关闭会话tf.Session.graph返回加载值该会话的图(graph)tf.Session.as_default()设置该对象为默认会话,并返回一个上下文管理器tf.Session.reset(target, containers=None, config=None)重设target的资源容器,并关闭所有连接的会话
在0.10版本该功能仅应用在分布会话中
target:为执行引擎所连接的目标,其包含有资源容器,
该资源容器分布在同一个集群的所有works上class tf.InteractiveSession使用在交互式上下文环境的tf会话,比如shell,ipythontf.InteractiveSession.close()关闭一个InteractiveSessiontf.get_default_session()返回当前线程的默认会话

tf.Session

#一个简单的tf.Session例子# 建立一个graph.a = tf.constant(5.0)b = tf.constant(6.0)c = a * b# 将graph载入到一个会话session中sess = tf.Session()# 计算tensor `c`.print(sess.run(c))

#一个会话可能会占用一些资源,比如变量、队列和读取器(reader)。释放这些不再使用的资源非常重要。#使用close()方法关闭会话,或者使用上下文管理器,释放资源。# 使用`close()`方法.sess = tf.Session()sess.run(...)sess.close()# 使用上下文管理器with tf.Session() as sess:  sess.run(...)

tf.Session()的变量设置, ConfigProto protocol buffer为会话提供了不同的配置选项。比如,创建一个会话,对设备布局使用软约束条件,以及对分布

# Launch the graph in a session that allows soft device placement and# logs the placement decisions.sess = tf.Session(config=tf.ConfigProto(allow_soft_placement=True,                                        log_device_placement=True))


tf.Session.run

a = tf.constant([10, 20])   b = tf.constant([1.0, 2.0])   # 'fetches' 可以为单个数   v = session.run(a)   # v is the numpy array [10, 20]   # 'fetches' 可以为一个list.   v = session.run([a, b])   # v a Python list with 2 numpy arrays: the numpy array [10, 20] and the   # 1-D array [1.0, 2.0]   # 'fetches' 可以是 lists, tuples, namedtuple, dicts中的任意:   MyData = collections.namedtuple('MyData', ['a', 'b'])   v = session.run({'k1': MyData(a, b), 'k2': [b, a]})   # v 为一个dict,并有   # v['k1'] is a MyData namedtuple with 'a' the numpy array [10, 20] and   # 'b' the numpy array [1.0, 2.0]   # v['k2'] is a list with the numpy array [1.0, 2.0] and the numpy array   # [10, 20].

tf.Session.as_default() 
使用关键字with指定会话, 可以在会话中执行Operation.run()或Tensor.eval(),以得到运行的tensor结果

c = tf.constant(..)sess = tf.Session()with sess.as_default():  assert tf.get_default_session() is sess  print(c.eval())

使用函数tf.get_default_session()来得到当前默认的会话 
需要注意的是,退出该as_default上下文管理器时,并没有关闭该会话(session ),必须明确的关闭会话

c = tf.constant(...)sess = tf.Session()with sess.as_default():  print(c.eval())# ...with sess.as_default():  print(c.eval())#关闭会话sess.close()#使用 with tf.Session()方式可以创建并自动关闭会话

tf.InteractiveSession

sess = tf.InteractiveSession()a = tf.constant(5.0)b = tf.constant(6.0)c = a * b# 我们直接使用'c.eval()' 而没有通过'sess'print(c.eval())sess.close()

以上的例子,在非交互会话的版本中为,

a = tf.constant(5.0)b = tf.constant(6.0)c = a * bwith tf.Session():  # We can also use 'c.eval()' here.  print(c.eval())

ABC

错误类 (Error classes)

操作描述class tf.OpError一个基本的错误类型,在当TF执行失败时候报错tf.OpError.op返回执行失败的操作节点,
有的操作如Send或Recv可能不会返回,那就要用用到node_def方法tf.OpError.node_def以NodeDef proto形式表示失败的optf.OpError.error_code描述该错误的整数错误代码tf.OpError.message返回错误信息class tf.errors.CancelledError当操作或者阶段呗取消时候报错class tf.errors.UnknownError未知错误类型class tf.errors.InvalidArgumentError在接收到非法参数时候报错class tf.errors.NotFoundError当发现不存在所请求的一个实体时候,比如文件或目录class tf.errors.AlreadyExistsError当创建的实体已经存在的时候报错class tf.errors.PermissionDeniedError没有执行权限做某操作的时候报错class tf.errors.ResourceExhaustedError资源耗尽时报错class tf.errors.FailedPreconditionError系统没有条件执行某个行为时候报错class tf.errors.AbortedError操作中止时报错,常常发生在并发情形class tf.errors.OutOfRangeError超出范围报错class tf.errors.UnimplementedError某个操作没有执行时报错class tf.errors.InternalError当系统经历了一个内部错误时报出class tf.errors.DataLossError当出现不可恢复的错误
例如在运行 tf.WholeFileReader.read()读取整个文件的同时文件被删减tf.errors.XXXXX.__init__(node_def, op, message)使用该形式方法创建以上各种错误类

相关链接:

[1] 安装Tensorflow(Linux ubuntu) http://blog.csdn.net/lenbow/article/details/51203526 
[2] ubuntu下CUDA编译的GCC降级安装 http://blog.csdn.net/lenbow/article/details/51596706 
[3] ubuntu手动安装最新Nvidia显卡驱动 http://blog.csdn.net/lenbow/article/details/51683783 
[4] Tensorflow的CUDA升级,以及相关配置 http://blog.csdn.net/lenbow/article/details/52118116 
[5] 基于gensim的Doc2Vec简析 http://blog.csdn.net/lenbow/article/details/52120230 
[6] TensorFlow的分布式学习框架简介 http://blog.csdn.net/lenbow/article/details/52130565 
[7] Tensorflow一些常用基本概念与函数(1) http://blog.csdn.net/lenbow/article/details/52152766 
[8] Tensorflow一些常用基本概念与函数(2) http://blog.csdn.net/lenbow/article/details/52181159

原创粉丝点击