文档章节

TensorFlow 官方API 中文版(一)

yecunhuang
 yecunhuang
发布于 2016/07/19 17:39
字数 1605
阅读 386
收藏 1

TensorFlow 官方API 中文版(一)

7/18/2016 7:49:42 PM

  在学习Tensorflow的API时,发现尙没有官方API的中文版。于是想在这里对照官方的API翻译成中文,一来督促自己学习,二来也想方便一些学习者解决一些语言上的障碍。所有内容均翻译自官方网站,若大家有疑问时可以参照原文链接如下:(貌似最近被墙了)
https://www.tensorflow.org/versions/r0.9/api_docs/index.html 注意:
  1.对于出现的重要概念或较难理解的句子都在后面括号做了英文原文表示
  2.对于一些基础概念如Operation,Tensor等用原文表示,便于理解。
  3.建议在学习完官方的入门教程后再来学习API   4.在保证语义完整清晰前提下,翻译尽力保证忠实于原文,仅在表达方式上略作调整
  5.欢迎转载,请注明出处

API文档

  TensorFlow 拥有多种语言的API用于构建和执行TensorFlow图,Python API 是目前最完整和最容易使用的,但是C++ API可能在执行图方面提供一些性能优势,同时支持在小型设备上的部署(例如Android)。随着时间的推移,我们希望TensorFlow社区能够开发出像Go,Java,JavaScript,Lua,R(或其他)这样的前端语言。借助于SWIG,用你最喜欢的语言开发TensorFlow界面将变得非常容易。

Part I Building Graphs 图的构建

1.1 核心图的数据结构

1.1.1 class tf.Graph

这是一个TensorFlow计算(computation),代表一个数据流图(dataflow graph).
一张图包含一系列的Opration对象,这些对象代表着计算单元,而Tensor对象代表着数据单元,这些数据单元在各个Opertation间流动。
一张 默认图(default Graph)已经注册,可以通过调用 tf.get_default_graph()来获取它。为了向默认图添加一个操作,可以简单地调用定义了一个新的 Opertation 的函数:

  c = tf.constant(4.0)
  assert c.graph is tf.get_default_graph()

另外一个典型的用法包括 Graph.as_default() 这个上下文管理器(context manager)在上下文环境中覆盖了当前的默认图。

g = tf.Graph()
with g.as_default():
# Define operations and tensors in `g`.
  c = tf.constant(30.0)
  assert c.graph is g

重要提示:这个类构建图是非线程安全的。所有的操作应该从单个线程中创建,否则必须提供外部同步。除非明确指明,所有方法都是非线程安全的。

tf.graph.__init__()

创建一个新的空的图。

tf.Graph.as_default()

返回一个使得当前图成为默认图的上下文管理器
这个方法应该在你想要在相同的过程中创建多图时被使用。为了方便,一个全局默认图已经被提供,如果你没有明确创建一个新的图,所有的操作将会被添加进这张图。当你使用这个方法时,请使用 with 关键字明确在接下来的代码块范围内创建的操作应该加进这张图。
默认图是当前线程的一个属性,如果你创建了一个新的线程,并且希望在这个线程里使用默认图,你必须在这个线程的函数里明确添加 with g.as_default():
下面的代码示例(相对于上述解释)是等价的:

# 1. Using Graph.as_default():
g = tf.Graph()
with g.as_default():
  c = tf.constant(5.0)
  assert c.graph is g

# 2. Constructing and making default:
with tf.Graph().as_default() as g:
  c = tf.constant(5.0)
  assert c.graph is g

返回
一个用于将当前图作为默认图的上下文管理器

tf.Graph.as_graph_def(from_version=None, add_shapes=False)

返回一个表示这个图的序列化的 GraphDef。

这个序列化的 GraphDef 可以被引入另一个图(使用 import_graph_def())或者使用 C++ Session API。 这个方法是线程安全的。

参数
from_version: 可选的,如果被设定,将返回一个 GraphDef,它包含仅从这张图的版本属性有了给定值后加入这张图的节点(nodes)。
add_shapes: 如果是真值,给每个带有输出推断图形的结点添加一个_output_shapes列表属性。(adds an “_output_shapes” list attr to each node with the inferred shapes of each of its outputs.)
返回
一个 GraphDef协议缓冲区(protocol buffer)
引起的错误
ValueError: 如果 graph_def 太大

tf.Graph.finalize()

结束这个图,使它只读
在调用g.finalize()后,不能向g添加任何新的操作。当这个图在多线程间共享时,为了保证没有操作添加到这个图,可以调用这个方法,例如当使用一个 QueueRunner时

tf.Graph.finalized

如果这个图已经结束,它为真

tf.Graph.control_dependencies(control_inputs)

返回一个明确控制依赖(control dependencies)的上下文管理器

使用 with 关键字明确所有在上下文内创建的操作应该在control_inputs上有控制依赖。例如:

    with g.control_dependencies([a, b, c]):
  # `d` and `e` will only run after `a`, `b`, and `c` have executed.
  d = ...
  e = ...

control_dependencies()的多重调用可以嵌套,在这种情况下,基于所有活动的上下文中的 control_inputs 的联合,一个新的 Operation 将拥有控制依赖。 with g.control_dependencies([a, b]): # Ops constructed here run after a and b. with g.control_dependencies([c, d]): # Ops constructed here run after a, b, c, and d.

你可以通过None来清除控制依赖。

with g.control_dependencies([a, b]):
  # Ops constructed here run after `a` and `b`.
  with g.control_dependencies(None):
# Ops constructed here run normally, not waiting for either `a` or `b`.
with g.control_dependencies([c, d]):
  # Ops constructed here run after `c` and `d`, also not waiting
  # for either `a` or `b`.

:控制依赖应用于那些在上下文内建立的操作。很少在上下文中使用使用一个 op 或者 tensor 时不添加一个控制依赖。下面的例子解释了这一点:

# WRONG
def my_func(pred, tensor):
  t = tf.matmul(tensor, tensor)
  with tf.control_dependencies([pred]):
# The matmul op is created outside the context, so no control
# dependency will be added.
return t

# RIGHT
def my_func(pred, tensor):
  with tf.control_dependencies([pred]):
# The matmul op is created in the context, so a control dependency
# will be added.
return tf.matmul(tensor, tensor)

参数:
control_inputs:一个 Operation 或者 Tensor 对象列表,它上下文内定义的操作被运行前被执行或者计算。也可以为None来清除控制依赖。
返回
一个明确在上下文内所有操作的控制依赖的上下文管理器
引起的错误
TypeError: 如果 control_inputs 不是一个 Operation 或者Tensor 对象的列表.

© 著作权归作者所有

yecunhuang
粉丝 1
博文 2
码字总数 3061
作品 0
深圳
私信 提问
英语不行?你可以试试TensorFlow官方中文版教程

机器之心编辑,参与:思源。 现在 TensorFlow 有官方中文版教程啦,以前的英文版 Tutorials 有了对应的中文翻译。各位还在 TensorFlow 门前徘徊的开发者们,现在可以对着中文教程学习各种流行...

机器之心
2018/11/19
0
0
tensorflow serving docker

背景介绍  TensorFlow Serving 是一个用于机器学习模型 serving 的高性能开源库。它可以将训练好的机器学习模型部署到线上,使用 gRPC 作为接口接受外部调用。更加让人眼前一亮的是,它支持...

晴天哥
03/03
0
0
TensorFlow——快速安装

TensorFlow:2015年Google开源的机器学习框架 1、Anoconda安装 (1)Window,MacOS,Linux都已支持Tensorflow。 (2)Window用户只能使用python3.5(64bit)。MacOS,Linux支持python2.7和python3...

飞天小橘子
2018/04/19
0
0
最强NLP模型BERT喜迎PyTorch版!谷歌官方推荐,也会支持中文

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yH0VLDe8VG8ep9VGe/article/details/83829583 郭一璞 夏乙 发自 凹非寺 量子位 报道 | 公众号 QbitAI 谷歌的最...

量子位
2018/11/07
0
0
Tensorflow - Implement for a Convolutional Neural Network on MNIST.

Coding according to TensorFlow 官方文档中文版 中文注释源于:tf.truncatednormal与tf.random_normal        TF-卷积函数 tf.nn.conv2d 介绍        TensorFlow - tf.nn.co...

LZ_Jaja
2018/08/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Datatables插件1.10.15版本服务器处理模式ajax获取分页数据实例解析

一、问题描述 前端需要使用表格来展示数据,找了一些插件,最后确定使用dataTables组件来做。 后端的分页接口已经写好了,不能修改。接口需要传入页码(pageNumber)和页面显示数据条数(pageSi...

OSC首席混子
16分钟前
0
0
基于虹软的Android的人脸识别SDK使用测试

现在有很多人脸识别的技术我们可以拿来使用;但是个人认为还是离线端的SDK比较实用;所以个人一直在搜集人脸识别的SDK;原来使用开源的OpenCV;最近有个好友推荐虹软的ArcFace, 闲来无事就下...

是哇兴哥棒棒哒
26分钟前
0
0
Netty内存池之PoolThreadCache详解

PoolThreadCahche是Netty内存管理中能够实现高效内存申请和释放的一个重要原因,Netty会为每一个线程都维护一个PoolThreadCache对象,当进行内存申请时,首先会尝试从PoolThreadCache中申请,...

爱宝贝丶
39分钟前
10
0
除了Reader、Inbox之外 谷歌“关门部”还关闭了哪些服务或产品?

我们经常调侃称谷歌的“关门部”和微软的“更名部”是 IT 界的两大传奇,那么除了比较熟悉的 RSS 订阅服务 Google Reader、电子邮件服务 Inbox 和 Facebook 竞品 Google+ 之外,你还知道谷歌...

linux-tao
39分钟前
0
0
从B站的代码泄露事件中,我们能学到些什么?

先声明一下,本文不聊ISSUE中的七七八八,也不聊代码是否写的好,更不聊是不是跟蔡徐坤有关之类的吃瓜内容。仅站在技术人的角度,从这次的代码泄露事件,聊聊在代码的安全管理上,通常都需要...

程序猿DD
44分钟前
46
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部