運行TensorFlow操做圖的類,使用默認註冊的圖(能夠指定運行圖)前端
1 import os 2 os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' #去掉警告,將警告級別提高 3 4 # 建立一張圖 5 g = tf.Graph() 6 7 with g.as_default(): #做爲默認圖 8 c = tf.constant(11) 9 print(c.graph) 10 11 a = tf.constant(2) #定義一個常量 12 b = tf.constant(4) 13 sum = tf.add(a,b) #加法操做 14 gr = tf.get_default_graph() 15 16 #一個會話只能使用一張圖,默認是註冊圖,即圖gr 17 # with tf.Session() as sess: #上下文管理 18 # print(sess.run(sum)) #run運行加法op 19 # print(sess.run(c)) # (Tensor Tensor("Const:0", shape=(), dtype=int32) is not an element of this graph.) 20 21 #在會話中指定圖運行 22 with tf.Session(graph=g) as sess: #上下文管理 23 print(sess.run(c))
輸出:python
<tensorflow.python.framework.ops.Graph object at 0x000002486656CD30> 11
會話擁有不少資源,如tf.Variable,tf.QueueBase和tf.ReaderBase等,會話結束後須要進行資源釋放後端
一、sess = tf.Session(),sess.run(),sess.close()app
二、使用上下文管理器測試
with tf.Session() as sess:this
sess.run()spa
tensorflow能夠分爲前端系統(定義程序的圖的結構)和後端系統(運算圖的結構,用cpu,gpu進行運算)命令行
會話的功能:線程
config=tf.ConfigProto(log_device_placement=True)
with tf.Session(config=tf.ConfigProto(log_device_placement=True)) as sess: #上下文管理 # print(sess.run(sum)) #run運行加法op print("a.graph:",a.graph)
輸出:code
Device mapping:
/job:localhost/replica:0/task:0/device:GPU:0 -> device: 0, name: GeForce GTX 1650, pci bus id: 0000:01:00.0, compute capability: 7.5
在命令行進行測試時使用
只要有會話的上下文環境,就能夠使用操做方便的eval()
1 a = tf.constant(2) #定義一個常量 2 b = tf.constant(4) 3 sum1 = tf.add(a,b) #加法操做 4 5 with tf.Session(config=tf.ConfigProto(log_device_placement=True)) as sess: #上下文管理 6 print(sess.run(sum1)) #run運行加法op 7 print(sum1.eval())
輸出:
Device mapping: /job:localhost/replica:0/task:0/device:GPU:0 -> device: 0, name: GeForce GTX 1650, pci bus id: 0000:01:00.0, compute capability: 7.5 Add: (Add): /job:localhost/replica:0/task:0/device:GPU:0 Const: (Const): /job:localhost/replica:0/task:0/device:GPU:0 Const_1: (Const): /job:localhost/replica:0/task:0/device:GPU:0 6 6