前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >tensorflow编程: Building Graphs

tensorflow编程: Building Graphs

作者头像
JNingWei
发布2018-09-28 15:41:38
7890
发布2018-09-28 15:41:38
举报
文章被收录于专栏:JNing的专栏JNing的专栏

Core graph data structures

tf.Graph

每次都必须要指定一个graph作为as_default,并只能在该graph中进行一切操作。

代码语言:javascript
复制
import tensorflow as tf

# 程序从一开始就默认有一个 graph 。任何的 tf.Graph() 操作 都是在新建 graph,但都只能在新建的那个 上下文管理器 内发挥作用
a = tf.get_default_graph()

# 该graph 继承 a.graph,则 该graph 内 default_graph 就为 a.graph
with a.as_default():
    b = tf.get_default_graph()
    assert b is a

# 通过 tf.Graph() 新建了一个 graph,则 该graph 内 default_graph 就为 新graph,且仅仅作用于该 上下文管理器内部
with tf.Graph().as_default():
    c = tf.get_default_graph()
    assert c is not a

assert tf.get_default_graph() is a
代码语言:javascript
复制
Process finished with exit code 0

每个环境下 存在只能存在 一个 graph 。非初始默认的 graph 通过 tf.Graph() 新建,但必须通过 as_default 才能启用形成一个 context manager 小环境来供使用。tf.Graph().as_default() 的作用 就是 新建——启用 二合一,一步到位执行。

代码语言:javascript
复制
import tensorflow as tf

a = tf.get_default_graph()
b = tf.Graph()
with b.as_default():
    c = tf.get_default_graph()
assert a is not b
assert b is c
代码语言:javascript
复制
Process finished with exit code 0

tf.Operation

tf.Tensor

Tensor types

tf.DType

表示Tensor中元素的类型。(这个api的作用暂时不是很懂,以后再回过头来看。)

代码语言:javascript
复制
import tensorflow as tf

foo = 1
print tf.DType(foo).is_floating
print tf.DType(foo)
print tf.as_dtype(foo)
print type(foo)
代码语言:javascript
复制
True
<dtype: 'float32'>
<dtype: 'float32'>
<type 'int'>

tf.as_dtype

Utility functions

tf.device

指定使用哪块处理器

tf.container

tf.name_scope

tf.name_scope (name, default_name=None, values=None)

tf.name_scope 只能对 tf.Variable() 加前缀,对 tf.get_variable() 无效。

代码语言:javascript
复制
import tensorflow as tf

with tf.name_scope("my"):
    initializer = tf.constant_initializer(value=10)
    var1 = tf.get_variable(name='var1', shape=[1], dtype=tf.float32, initializer=initializer)
    var2 = tf.Variable(name='var2', initial_value=20, dtype=tf.float32)

with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    print var1.name, sess.run(var1)
    print var2.name, sess.run(var2)
代码语言:javascript
复制
var1:0 [ 10.]

# 只有 tf.Variable() 被加了前缀。
my/var2:0 20.0

tf.control_dependencies

tf.convert_to_tensor

tf.convert_to_tensor (value, dtype=None, name=None, preferred_dtype=None)

将变量类型转换为 tensor型

代码语言:javascript
复制
import tensorflow as tf

a = 1
b = tf.convert_to_tensor(a)
print type(a), type(b)
代码语言:javascript
复制
<type 'int'> <class 'tensorflow.python.framework.ops.Tensor'>

Process finished with exit code 0

tf.get_default_graph

返回 当前所在的graph

代码语言:javascript
复制
# 见 tf.Graph
代码语言:javascript
复制

tf.reset_default_graph

重设 当前所在的graph

代码语言:javascript
复制
import tensorflow as tf

a = tf.get_default_graph()
tf.reset_default_graph()
assert tf.get_default_graph() is not a
代码语言:javascript
复制
Process finished with exit code 0

Graph collections

tf.add_to_collection

收集并归类存放 键值对

tf.add_to_collection (name, value)

代码语言:javascript
复制
import tensorflow as tf

var1 = 10
var2 = 20
tf.add_to_collection('var_1', value=var1)
print tf.get_collection(key='var_1'), type(tf.get_collection(key='var_1'))
print tf.get_collection(key='var_2'), type(tf.get_collection(key='var_2'))
assert list([var1]) == tf.get_collection(key='var_1')
代码语言:javascript
复制
[10] <type 'list'>
[] <type 'list'>

Process finished with exit code 0

tf.get_collection

按名索取 tf.add_to_collection() 收集到的 键值对 ,以 list 形式返回;如不存在着返回 空list

tf.get_collection (key, scope=None)

代码语言:javascript
复制
# 同 tf.add_to_collection
代码语言:javascript
复制

tf.get_collection_ref

感觉和 tf.get_collection 的不同就在于 没有 scope 参数,所以就没有了指定 scope 的功能。

tf.get_collection_ref (key)

代码语言:javascript
复制
import tensorflow as tf

var1 = 10
tf.add_to_collection('var_1', value=var1)
print tf.get_collection_ref(key='var_1'), type(tf.get_collection_ref(key='var_1'))
代码语言:javascript
复制
[10] <type 'list'>

tf.GraphKeys

略。

Defining new operations

tf.TensorShape

略。

tf.Dimension

略。

tf.op_scope

略。

For libraries building on TensorFlow

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017年09月30日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Core graph data structures
    • tf.Graph
      • tf.Operation
        • tf.Tensor
        • Tensor types
          • tf.DType
            • tf.as_dtype
            • Utility functions
              • tf.device
                • tf.container
                  • tf.name_scope
                    • tf.control_dependencies
                      • tf.convert_to_tensor
                        • tf.get_default_graph
                          • tf.reset_default_graph
                          • Graph collections
                            • tf.add_to_collection
                              • tf.get_collection
                                • tf.get_collection_ref
                                  • tf.GraphKeys
                                  • Defining new operations
                                    • tf.TensorShape
                                      • tf.Dimension
                                        • tf.op_scope
                                        • For libraries building on TensorFlow
                                        领券
                                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档