2017-01-02 41 views
18

我正在編寫的程序涉及運行時在模型之間切換。在存儲器中存儲張量流模型

我目前正在使用Saver從磁盤保存/加載模型,如下所示:https://www.tensorflow.org/api_docs/python/state_ops/saving_and_restoring_variables#Saver

這些模型相當小,可以存儲在內存中,所以我想知道是否有人知道如何在內存中存儲和恢復這些模型,而不是將它們保存到磁盤。

我試圖修改張量流源以將模型保存到內存中,但是gen_io_ops似乎是在編譯期間生成的。另一種可能的方法是使用內存映射文件。有誰知道更簡單的方法?

+4

保存到tmpfs怎麼樣? –

回答

1

我只是有兩個不同的會議與他們自己的計算圖。或者,您可以在同一會話中複製計算圖(兩個變量副本,操作等)。然後你會打電話給sess.run(comp1 if useCompOne else comp2),但是你想設置它。

+1

這種方法(假設兩個會話都處於活動狀態)將保持它們所在的變量,即在GPU內存中;如果GPU內存是瓶頸(通常是這樣),則OP需要一種解決方案將不活動會話數據從GPU移動到更便宜/更大的系統RAM。 – Peteris

+1

非常真實。我正在處理他的評論:「模型非常小,可以存儲在內存中」。我想你可以在RAM上有兩套副本和GPU存儲器上的計算集,然後寫一個'transfer'操作將當前值從gpu複製到ram,反之亦然,如果那是需要的,但我會研究其他選項,一旦它們不再適合內存。 –