您好,登錄后才能下訂單哦!
這篇文章主要講解了TensorFlow怎么使用Graph,內容清晰明了,對此有興趣的小伙伴可以學習一下,相信大家閱讀完之后會有幫助。
1.創建圖
在tensorflow中,一個程序默認是建立一個圖的,除了系統自動建立圖以外,我們還可以手動建立圖,并做一些其他的操作。
下面我們使用tf.Graph函數建立圖,使用tf.get_default_graph函數來獲取圖,使用reset_default_graph對圖進行重置。
import tensorflow as tf import numpy as np c = tf.constant(1.5) g = tf.Graph() with g.as_default(): c1 = tf.constant(2.0) print(c1.graph) print(g) print(c.graph) g2 = tf.get_default_graph() print(g2) tf.reset_default_graph() g3 = tf.get_default_graph() print(g3)
上述的代碼運行結果如下所示:
根據上述的運行結果,c是在剛開始的默認圖中建立的,所以打印的結果就是13376A1FE10,和g2獲取的默認圖的值是一樣的,然后使用tf.Graph建立了一個新的圖,并添加了變量c1,最后又對圖進行了重置,替代了原來的默認圖。
在使用reset_default_graph()函數的時候,要保證當前圖中資源都已經全部進行了釋放,否則將會報錯。
2.獲取張量
我們可以在圖中通過名字得到其對應的元素,比如獲取圖中的變量和OP等元素。
import tensorflow as tf import numpy as np g = tf.Graph() with g.as_default(): c1 = tf.constant(2.5, name='c1_constant') c2 = tf.Variable(1.5, dtype=tf.float32, name='c2_constant') add = tf.multiply(c1, c2, name='op_add') c_1 = g.get_tensor_by_name(name='c1_constant:0') c_2 = g.get_tensor_by_name(name='c2_constant:0') c_3 = g.get_tensor_by_name(name='op_add:0') print(c_1) print(c_2) print(c_3)
在進行測試時,我們為元素添加了變量名,在設置變量名的時候,設置好的名字會自動添加后面的:0字符。一般我們可以將名字打印出來,在將打印好的名字進行回填。
3.獲取節點操作
獲取節點操作OP的方法和獲取張量的方法非常類似,使用get_operation_by_name.下面是運行實例:
import tensorflow as tf import numpy as np a = tf.constant([[1.0, 2.0]]) b = tf.constant([[1.0], [3.0]]) tensor_1 = tf.matmul(a, b, name='matmul_1') with tf.Session() as sess: sess.run(tf.global_variables_initializer()) t1 = tf.get_default_graph().get_operation_by_name(name='matmul_1') t2 = tf.get_default_graph().get_tensor_by_name(name='matmul_1:0') print(t1) print('t1: ', sess.run(t1)) print('t2: ', sess.run(t2))
在上述的代碼中,定義了一個OP操作,命名為matmul_1,在運行時我們將op打印出來,在使用名字后面加上:0我們就能得到OP運算的結果的tensor,注意這兩者的區別。
我們還可以通過get_opreations函數獲取圖中的所有信息。此外,我們還可以使用tf.Grapg.as_graph_element函數將傳入的對象返回為張量或者op。該函數具有驗證和轉換功能。
看完上述內容,是不是對TensorFlow怎么使用Graph有進一步的了解,如果還想學習更多內容,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。