TensorFlow計算圖,張量,會話基礎知識

 1 import tensorflow as tf
 2 get_default_graph = "tensorflow_get_default_graph.png"
 3 # 當前默認的計算圖 tf.get_default_graph
 4 print(tf.get_default_graph())
 5 
 6 # 自定義計算圖
 7 # tf.Graph
 8 
 9 # g1中定義名字爲v的變量 初始化爲0
10 g1 = tf.Graph()
11 with g1.as_default():
12     v = tf.get_variable("v", shape=[1],
13                         initializer=tf.zeros_initializer())
14 
15 # g2中定義名字爲v的變量 初始化爲1
16 g2 = tf.Graph()
17 with g2.as_default():
18     v = tf.get_variable("v", shape=[1],
19                         initializer=tf.ones_initializer())
20 
21 # initialize_all_variables  Use `tf.global_variables_initializer` instead.
22 # 在計算圖g1中讀取變量v的取值  result is[ 0.]
23 with tf.Session(graph=g1) as sess:
24     # tf.initialize_all_variables().run()
25     tf.global_variables_initializer().run()
26     with tf.variable_scope("", reuse=True):
27         print(sess.run(tf.get_variable("v")))
28 
29 # 在計算圖g2中讀取變量v的取值  result is [1.]
30 with tf.Session(graph=g2) as sess:
31     # tf.initialize_all_variables().run()
32     tf.global_variables_initializer().run()
33     with tf.variable_scope("", reuse=True):
34         print(sess.run(tf.get_variable("v")))
35 
36 '''
37 #計算圖能夠隔離張量和計算也能夠指定計算設備
38 g=tf.Graph()
39 #指定GPU
40 with g.device("/gpu:0"):
41     result=a+b
42 
43 '''
 1 import tensorflow as tf
 2 
 3 #tensor 張量 零階張量是標量scalar 一階張量是向量vector n階張量理解爲n維數組
 4 #張量在TensorFlow中不是直接採用數組的形式,只是運算結果的引用。並無保存數組,保存的是如何獲得這些數字的計算過程
 5 
 6 #tf.constan是一個計算,結果爲一個張量,保存在變量a中
 7 a=tf.constant([1.0,2.0],name="a")
 8 b=tf.constant([2.0,3.0],name="b")
 9 
10 result=a+b
11 print(result)
12 #Tensor("add:0", shape=(2,), dtype=float32)
13 
14 result=tf.add(a,b,name="add")
15 print(result)
16 #Tensor("add_1:0", shape=(2,), dtype=float32)
17 #張量保存三個屬性  名字name(惟一標識)  維度shape  類型 dtype
18 #張量的命名是node:src_output形式給出,node是節點名稱,src_output是表示張量來自節點第幾個輸出
19 #add_1:0 說明是add節點的第一個輸出(編號從0開始)
20 #shape=(2,) 覺得數組,長度爲2
21 
22 #dtype=float32 每一個張量類型惟一,不匹配將報錯
23 '''
24 a=tf.constant([1,2],name="a")
25 b=tf.constant([2.0,3.0],name="b")
26 result=a+b
27 print(result)
28 #ValueError: Tensor conversion requested dtype int32 for Tensor with dtype float32: 'Tensor("b_1:0", shape=(2,), dtype=float32)'
29 '''
30 
31 #result.get_shape 獲取張量的維度
32 print(result.get_shape)
33 # result
34 # <bound method Tensor.get_shape of <tf.Tensor 'add_1:0' shape=(2,) dtype=float32>>
35 
36 #當計算圖構造完成後,張量能夠得到計算結果 (張量自己沒有存儲具體的數字)
37 
38 
39 #使用session來執行定義好的運算 (也就是張量存儲了運算的過程,使用session執行運算獲取結果)
40 #建立會話
41 sess=tf.Session()
42 res=sess.run(result)
43 print(res)
44 #result is [ 3.  5.]
45 #關閉會話是本地運行使用到的資源釋放
46 sess.close()
47 
48 #也能夠使用python上下文管理器機制,吧全部的計算放在with中,上下文管理器推出是自動釋放全部資源,能夠避免忘記sess.close()去釋放資源
49 
50 with tf.Session() as sess:
51     print(sess.run(result))
52 #[ 3.  5.]
53 
54 
55 #as_default 經過默認的會話計算張量的取值 會話不會自動生成默認的會話,須要手動指定 指定後能夠經過eval來計算張量的取值
56 sess =tf.Session()
57 with sess.as_default():
58     print(result.eval())
59 #[ 3.  5.]
60 
61 #ConfigProto來配置須要生成的會話
62 #allow_soft_placement GPU設備相關
63 #log_device_palcement 日誌相關
64 config=tf.ConfigProto(allow_soft_placement=True,
65                       log_device_placement=True)
66 sess1=tf.InteractiveSession(config=config)
67 sess2=tf.Session(config=config)
68 #Device mapping: no known devices.  tensorflow\core\common_runtime\direct_session.cc
69 #Device mapping: no known devices.
70 
71 
72 #PY\35\tensorflow\core\platform\cpu_feature_guard.cc:137] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX AVX2
相關文章
相關標籤/搜索