基本介绍
图的介绍
图是数据结构和算法学里最强大的框架之一, 可以用来表示所有类型的结构和系统.
- 顶点/节点
- 边(edge): 顶点之间的线段就是边,表示事物之间的关系. 比如社交网络的关注粉丝关系.
- 有向图和无向图: 区别就是有向图中的边的关系是有方向的.
- 环图和无环图: 关系的传递
Computation Graph : 是边(data)和节点(operation)组成的有向数据流图
- 边代表数据的流向, 也可是说的data的传递
- 节点代表对数据的操作和计算, 对数据的操作
Graph常规操作
- 默认图中创建操作/函数
import tensorflow as tf
c = tf.constant(1.0)
a = 1.0
print(c)
print(a)
print(c.graph)
print(tf.get_default_graph)
print(c.name)
#输出结果
Tensor("Const:0", shape=(), dtype=float32)
1.0
<tensorflow.python.framework.ops.Graph object at 0x0000022D5F630BE0>
<function get_default_graph at 0x0000022D70A6DBF8>
Const:0
- 在不通的图里创建函数
#上下文管理器选择图
g = tf.Graph()
print('g:', g)
with g.as_default():
d = tf.constant(1.0)
print(d.graph)
#运行结果:
g: <tensorflow.python.framework.ops.Graph object at 0x000002413EB3BC50>
<tensorflow.python.framework.ops.Graph object at 0x000002413EB3BC50>
- 为图分配不同的运行设备
g2 = tf.Graph()
with g2.device('/gpu:0'):
a = tf.constant(1.5)
- namescope, 能是神经网络的节点标签清晰
with tf.name_scope('A'):
a1 = tf.Variable([1], name='a1')
with tf.name_scope('B'):
a2 = tf.Variable([1], name='a2')
with tf.name_scope('A'):
a3 = tf.Variable([1], name='a3')
print(a1)
print(a2.name)
print(a3)
# 运行结果
<tf.Variable 'A/a1:0' shape=(1,) dtype=int32_ref>
A/B/a2:0
<tf.Variable 'A_1/a3:0' shape=(1,) dtype=int32_ref>
网友评论