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