2017-01-02 104 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,反之亦然,如果那是需要的,但我会研究其他选项,一旦它们不再适合内存。 –