[英]What's the point of having more than one tf.Graph?
擁有多個tf.Graph
什么tf.Graph
?
我正在專門考慮機器學習模型的超參數調整,其中一個模型要么是一個單獨的圖,要么幾個模型被定義為同一圖中的斷開連接的組件。
我知道擁有多個tf.Session
是不好的,因為無法正確地進行任務調度,因此我假設一個會話中可能有多個tf.Graph
對象(盡管tf.Session(graph=...)
可能會有所不同),而不是像tf.variable_scope
那樣具有多個組件,這樣做的目的是什么呢? 這主要與使用tf.train.Saver
保存,在TensorBoard中可視化等等保存什么有關嗎? 哪種方法更好? 模型應該共享一個圖形還是每個模型都有自己的超參數調整?
使用tf.reset_default_graph(); sess = tf.InteractiveSession()
似乎更簡單tf.reset_default_graph(); sess = tf.InteractiveSession()
tf.reset_default_graph(); sess = tf.InteractiveSession()
,並在整個代碼庫的其余部分都忘記了tf.Graph
和tf.Session
。 我想念什么?
如果您只有一個會話,那么擁有多個圖表毫無意義。 會話鏈接到一個圖,因此,如果您嘗試從另一個圖運行一個元素,則會得到xyz is not an element of this graph
錯誤xyz is not an element of this graph
。
當您有多個會話時,具有多個圖形是有意義的。 例如,假設您正在使用分布式TensorFlow,但還想在本地進行一些計算。 你可以做這樣的事情
local_session = tf.Session("", graph=local_graph)
remote_session = tf.Session("grpc://...", graph=remote_graph)
您可能會在同一個tf.Graph
對象上使用兩個會話,但是,對該對象的任何添加都會導致在下一個session.run
上調用TF_ExtendGraph
,即使該會話不是必需的。 換句話說,共享圖意味着在修改圖時向所有會話發送<= 2GB的圖描述。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.