Core graph data structures
tf.Graph
每次都必须要指定一个graph作为as_default,并只能在该graph中进行一切操作。
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
Process finished with exit code 0
每个环境下 存在
且 只能存在
一个 graph 。非初始默认的 graph 通过 tf.Graph()
新建,但必须通过 as_default
才能启用形成一个 context manager
小环境来供使用。tf.Graph().as_default()
的作用 就是 新建——启用
二合一,一步到位执行。
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
Process finished with exit code 0
tf.Operation
tf.Tensor
Tensor types
tf.DType
表示Tensor中元素的类型。(这个api的作用暂时不是很懂,以后再回过头来看。)
import tensorflow as tf
foo = 1
print tf.DType(foo).is_floating
print tf.DType(foo)
print tf.as_dtype(foo)
print type(foo)
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()
无效。
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)
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型
import tensorflow as tf
a = 1
b = tf.convert_to_tensor(a)
print type(a), type(b)
<type 'int'> <class 'tensorflow.python.framework.ops.Tensor'>
Process finished with exit code 0
tf.get_default_graph
返回 当前所在的graph
名
# 见 tf.Graph
tf.reset_default_graph
重设 当前所在的graph
import tensorflow as tf
a = tf.get_default_graph()
tf.reset_default_graph()
assert tf.get_default_graph() is not a
Process finished with exit code 0
Graph collections
tf.add_to_collection
收集并归类存放 键值对
。
tf.add_to_collection (name, value)
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')
[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)
# 同 tf.add_to_collection
tf.get_collection_ref
感觉和 tf.get_collection
的不同就在于 没有 scope
参数,所以就没有了指定 scope
的功能。
tf.get_collection_ref (key)
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'))
[10] <type 'list'>
tf.GraphKeys
略。
Defining new operations
tf.TensorShape
略。
tf.Dimension
略。
tf.op_scope
略。