Tensorflow計算模型——計算圖


1.計算圖的概念:

  計算圖:輸入和計算函數都以節點的形式出現,而節點的輸出項之間的關系以有向線段表示所構成的計算圖形。

如:向量a, b 相加:

 

2. 計算圖的使用:

注意:Tensorflow程序一般分兩步:定義計算圖中所有計算;執行計算

在tensorflow代碼執行的時候,tensorflow會自定定義一個默認的計算圖,可以通過tf.get_default_graph函數來獲取當前默認的計算圖

import tensorflow as tf

'''tensorflow程序第一步:定義計算圖中所有計算'''
a=tf.constant([1.0, 2.0], name="a")
b=tf.constant([2.0, 3.0], name="b")
result=a+b

'''判斷a節點是不是在默認節點中'''
print(a.graph is tf.get_default_graph())
print(b.graph is tf.get_default_graph())

輸出:
True
True

當然,可以使用tf.Graph函數來生成新的計算圖。

注意:計算圖其實是一種數據結構,則上面的數據和運算不會相互共享。

import tensorflow as tf

'''tensorflow第一步:定義所有計算'''

g1=tf.Graph()
with g1.as_default():
    '''在計算圖g1中定義變量“v",並初始化為0'''
    v=tf.get_variable( "v", shape=[1,2],initializer=tf.zeros_initializer )

g2=tf.Graph()
with g2.as_default():
    '''在計算圖g2中定義變量“v",初始化為1'''
    v=tf.get_variable( "v", shape=[2,3],initializer=tf.ones_initializer )

'''tensorflow第二步:運行計算'''

with tf.Session(graph=g1) as sess:
    tf.initialize_all_variables().run()         #初始化所有變量
    with tf.variable_scope("", reuse=True):
        print(sess.run(tf.get_variable("v")))       #獲取變量v

with tf.Session(graph=g2) as sess:
    tf.initialize_all_variables().run()
    with tf.variable_scope("", reuse=True):
        print(sess.run(tf.get_variable("v")))

輸出:
[[0. 0.]]
[[1. 1. 1.]
 [1. 1. 1.]]

計算圖由節點和關系構成,那么計算圖的資源如何給用戶比較方便的調用呢?

在一個計算圖中可以使用集合(collection)來管理整個資源。這里的資源具體指的是張量,變量,或者隊列等。

tf.add_to_collection函數將資源加入一個或者多個collection

tf.get_collection函數,獲取指定collection中的所有資源

    幾個常用的集合

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM