簡體   English   中英

擁有多個tf.Graph有什么意義?

[英]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.Graphtf.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM