TensorFlow图的基本操作

一 实例描述
本例演示了使用3种方式来建立图,并演示获取图相关内容的操作。
一个TensorFlow程序默认是建立一个图,除了系统自动建图外,还可以手动建立,并做一些其他操作。

二 代码
import numpy as np
import tensorflow as tf
# 1 创建图的方法
'''
下面代码演示了使用tf.Graph函数建立图,使用tf.get_default_graph函数获得图,以及使用reset_default_graph来重置图的过程
'''
c = tf.constant(0.0)
g = tf.Graph()
with g.as_default():
  c1 = tf.constant(0.0)
  print(c1.graph)        #<tensorflow.python.framework.ops.Graph object at 0x000001DAEDB25908>  通过.graph获得所在图
  print(g)                    #<tensorflow.python.framework.ops.Graph object at 0x000001DAEDB25908> tf.Graph建立的图
  print(c.graph)          #<tensorflow.python.framework.ops.Graph object at 0x000001DAEDB25160>,刚开始默认图中建立的
g2 =  tf.get_default_graph()
print(g2)                  #<tensorflow.python.framework.ops.Graph object at 0x000001DAEDB25160>,获得刚开始默认图
tf.reset_default_graph()
g3 =  tf.get_default_graph()
print(g3)                    #<tensorflow.python.framework.ops.Graph object at 0x000001DAEDB25668>  重新建立以张图替换原来默认图

# 2.    获取tensor
'''
在图里面可以通过名字得到对应的元素,例如get_tensor_by_name可以获得图里面的张量
'''
print(c1.name)    #Const:0  c1是在子图g中建立的
t = g.get_tensor_by_name(name = "Const:0")    #访问图中的张量,将c1的名字放到get_tensor_by_name里面反向得到其张量
print(t)  #Tensor("Const:0", shape=(), dtype=float32)

# 3 获取op
'''
获取节点操作op的方法和获取张量的方法非常类似,使用的方法是get_operation_by_name
'''
a = tf.constant([[1.0, 2.0]])
b = tf.constant([[1.0], [3.0]])
tensor1 = tf.matmul(a, b, name='exampleop')  #不是OP,而是张量。OP其实是描述张量中的运算关系
print(tensor1.name,tensor1)   #将张量的名字和张量打印出来
test = g3.get_tensor_by_name("exampleop:0") #test和tensor1是一样的
print(test)
print(tensor1.op.name)
testop = g3.get_operation_by_name("exampleop")
print(testop)
with tf.Session() as sess:
    test =  sess.run(test)
    print(test)
    test = tf.get_default_graph().get_tensor_by_name("exampleop:0")
    print (test)

#4 获取所有列表
#返回图中的操作节点列表
tt2 = g.get_operations()
print(tt2)  #[<tf.Operation 'Const' type=Const>]  由于g中只有一个常量,所有打印一条信息

#5 获取对象
'''
使用as_graph_element函数,即传入一个对象,返回一个张量或一个OP。该函数具有验证和转换功能,在多线程方面会偶尔用到。
'''
tt3 = g.as_graph_element(c1)
print(tt3)
print("________________________\n")
三 运行结果
<tensorflow.python.framework.ops.Graph object at 0x000001DAEDB25908>
<tensorflow.python.framework.ops.Graph object at 0x000001DAEDB25908>
<tensorflow.python.framework.ops.Graph object at 0x000001DAEDB25160>
<tensorflow.python.framework.ops.Graph object at 0x000001DAEDB25160>
<tensorflow.python.framework.ops.Graph object at 0x000001DAEDB25668>
Const:0
Tensor("Const:0", shape=(), dtype=float32)
exampleop:0 Tensor("exampleop:0", shape=(1, 1), dtype=float32)
Tensor("exampleop:0", shape=(1, 1), dtype=float32)
exampleop
name: "exampleop"
op: "MatMul"
input: "Const"
input: "Const_1"
attr {
  key: "T"
  value {
    type: DT_FLOAT
  }
}
attr {
  key: "transpose_a"
  value {
    b: false
  }
}
attr {
  key: "transpose_b"
  value {
    b: false
  }
}
[[ 7.]]
Tensor("exampleop:0", shape=(1, 1), dtype=float32)
[<tf.Operation 'Const' type=Const>]
Tensor("Const:0", shape=(), dtype=float32)

四 说明
本例体现了建立图、获取张量、获取节点操作、获取元素列表、获取对象等操作

猜你喜欢

转载自blog.csdn.net/chengqiuming/article/details/80040653