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

1、序言

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

操作组 操作
Data IO (Python functions) TFRecordWrite,rtf_record_iterator
Running Graphs Session 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,ipython
tf.InteractiveSession.close() 关闭一个InteractiveSession
tf.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 * b
with 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形式表示失败的op
tf.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) 使用该形式方法创建以上各种错误类

Tensorflow一些常用基本概念与函数(三)的更多相关文章

  1. Tensorflow一些常用基本概念与函数(四)

    摘要:本系列主要对tf的一些常用概念与方法进行描述.本文主要针对tensorflow的模型训练Training与测试Testing等相关函数进行讲解.为‘Tensorflow一些常用基本概念与函数’系 ...

  2. Tensorflow一些常用基本概念与函数(二)

    1.tensorflow的基本运作 为了快速的熟悉TensorFlow编程,下面从一段简单的代码开始: import tensorflow as tf #定义‘符号’变量,也称为占位符 a = tf. ...

  3. Tensorflow一些常用基本概念与函数

    1.tensorflow的基本运作 为了快速的熟悉TensorFlow编程,下面从一段简单的代码开始: import tensorflow as tf #定义‘符号’变量,也称为占位符 a = tf. ...

  4. Tensorflow一些常用基本概念与函数(1)

    为了快速的熟悉TensorFlow编程,下面从一段简单的代码开始: import tensorflow as tf #定义‘符号’变量,也称为占位符 a = tf.placeholder(" ...

  5. Tensorflow一些常用基本概念与函数(一)

    1.tensorflow的基本运作 为了快速的熟悉TensorFlow编程,下面从一段简单的代码开始: import tensorflow as tf #定义‘符号’变量,也称为占位符 a = tf. ...

  6. php实现的三个常用加密解密功能函数示例

    目录 算法一: 算法二: 算法三(改进第一个加密之后的算法) 本文实例讲述了php实现的三个常用加密解密功能函数.分享给大家供大家参考,具体如下: 算法一: //加密函数 function lock_ ...

  7. tensorflow学习笔记——常见概念的整理

    TensorFlow的名字中已经说明了它最重要的两个概念——Tensor和Flow.Tensor就是张量,张量这个概念在数学或者物理学中可以有不同的解释,但是这里我们不强调它本身的含义.在Tensor ...

  8. ORACLE常用数值函数、转换函数、字符串函数介绍

    ORACLE常用数值函数.转换函数.字符串函数介绍. 数值函数: abs(m) m的绝对值 mod(m,n) m被n除后的余数 power(m,n) m的n次方 round(m[,n]) m四舍五入至 ...

  9. TensorFlow 入门之手写识别CNN 三

    TensorFlow 入门之手写识别CNN 三 MNIST 卷积神经网络 Fly 多层卷积网络 多层卷积网络的基本理论 构建一个多层卷积网络 权值初始化 卷积和池化 第一层卷积 第二层卷积 密集层连接 ...

随机推荐

  1. 微信小程序 --- 下拉刷新上拉加载

    查看文档看到:page()函数注册页面的时候,有 onPullDownRefresh 监听用户下拉动作,onReachBottom 页面上拉触底事件的函数. 在小程序里,用户顶部下拉是默认禁止的,我们 ...

  2. Spring MVC 框架学习

    一.spirng的简介 Spring是一个开源框架,它由Rod Johnson创建.它是为了解决企业应用开发的复杂性而创建的.Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情. ...

  3. php中数组操作函数

    一.数组操作的基本函数数组的键名和值array_values($arr);  获得数组的值array_keys($arr);  获得数组的键名array_flip($arr);  数组中的值与键名互换 ...

  4. 【转载】排查Linux机器是否已经被入侵

          背景信息:以下情况是在CentOS 6.9的系统中查看的,其它Linux发行版类似 1.入侵者可能会删除机器的日志信息,可以查看日志信息是否还存在或者是否被清空,相关命令示例: [root ...

  5. Java虚拟机规范----JVM体系结构

    一.Java平台的结构图 二.JVM与JRE.JDK关系? JVM:Java Virtual Machine(Java虚拟机),负责执行符合规范的Class文件 JRE:Java Runtime En ...

  6. 转!!spring @component 详解 默认初始化bean的名字 VNumberTask类 就是 VNumberTask

    参考链接:信息来源 今天碰到一个问题,写了一个@Service的bean,类名大致为:CUser xml配置: <context:component-scan base-package=&quo ...

  7. js基础面试高频面点1:变量提升

    一.什么是变量提升?var变量提升的底层原理是什么? 变量提升的定义:所有变量的声明语句都会被提升到代码头部,这就是变量提升. 原理:引擎在读取js代码的过程中,分为两步,专业来说代码运行是分为预处理 ...

  8. Google I/O 2014 - Keynote for Android

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/jingxia2008/article/details/34809467 Google I/O 201 ...

  9. Windows上的巧克力味Chocolatey详解

    Chocolatey是什么?很简单,Chocolatey就是Windows系统的yum或apt-get. 一.Chocolatey介绍 Chocolatey是一款专为Windows系统开发的.基于Nu ...

  10. 《TP5.0学习笔记---模型篇》

    https://blog.csdn.net/self_realian/article/details/78596261 一.什么是模型 为什么我们要在项目中使用模型,其实我们知道,我们可以直接在控制器 ...