close

<以下是我個人經驗,可能有誤>

我們都知道tensorflow是以計算突來當作整體變數架構

"tensor再graph裡飛"

tensorflow自動會將定義的計算轉化為計算圖上的節點

計算圖使結構清晰,但也是結構複雜

因為計算圖是一種新的概念

所以剛開始接觸tensorflow時我不太會去注意graph這東西

但當我開始與夥伴寫一個系統時

整合就開始出現問題了

經常發生的變數之間互相無法感應

他們分別處於不同計算圖上

這種情況再使用keras套件與tensorflow混用也經常發生

或是使用keras套件但是想自訂loss之類

因為keras他會自動為計算圖參數定義name

而若是你想用較複雜的方式引用參數

而自訂了name後

就會發生問題

如何解決此問題呢

目前我們系統是以統一設定為初始計算圖的方式

再每個張量出現位置都以初始計算圖括起來

 

若是不確定是否便量處於不同計算圖上時

可用以下方是顯示其是否位於初始計算圖

通過tf.get_default_graph()函數可以獲取當前默認計算圖(也就是tensorflow自動維護之初始計算圖)

通過a.graph可以查看tensor所屬計算圖

print( a.graph is tf.get_default_graph() )

返回boolean值

 

tensorflow支持通過tf.Garph函數生成新計算圖

不同計算圖上之tensor和運算都不會共享

此特性可觀察以下code得到實際結果

image

 

 

當我們整合不同神經網路時

我們會在每份使用到tensorflow的.py檔前加入

image

設定config以及全域sess、graph(初始graph)

然後將tensor with起來

image

 

小tip:

summary可以印出神經網路結構

在寫論文非常好用

image

 

 

 

 

arrow
arrow
    全站熱搜

    KR 發表在 痞客邦 留言(0) 人氣()