1. 程式人生 > 程式設計 >TensorFlow使用Graph的基本操作的實現

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)

上述的程式碼執行結果如下所示:

TensorFlow使用Graph的基本操作的實現

根據上述的執行結果,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)

TensorFlow使用Graph的基本操作的實現

在進行測試時,我們為元素添加了變數名,在設定變數名的時候,設定好的名字會自動新增後面的: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的基本操作的實現的文章就介紹到這了,更多相關TensorFlow Graph操作內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!