2017-01-02 6 views
18

私が書いているプログラムは、実行時にモデルを切り替えることです。テンソルフローモデルをメモリに保存する

私は現在、ここで指定されているようにディスクからモデルをセーブ/ロードするためにSaverを使用しています:https://www.tensorflow.org/api_docs/python/state_ops/saving_and_restoring_variables#Saver

モデルはかなり小さく、メモリに保存することができるので、これらのモデルをディスクに保存するのではなく、メモリに保存して復元する方法を知っている人がいるかどうかは疑問でした。

モデルをメモリに保存するためにテンソルフローソースを変更しようとしましたが、コンパイル時にgen_io_opsが生成されるようです。もう一つの可能​​な方法は、メモリマップされたファイルを使用することです。誰かが簡単な方法を知っていますか?

+4

tmpfsに保存するのはどうですか? –

答えて

1

私は自分の計算グラフで2つの異なるセッションを持っています。あるいは、同じセッションで計算グラフ(変数、操作などの2つのコピー)を複製することもできます。その後、sess.run(comp1 if useCompOne else comp2)に電話をかけますが、設定したいと思います。

+1

このアプローチは(両方のセッションがアクティブであると仮定して)、変数をGPUメモリ内に保持します。 GPUメモリがボトルネック(しばしば)である場合、OPは非アクティブなセッションデータをGPUからより安価な/より大きなシステムRAMに移動するソリューションを必要とします。 – Peteris

+1

非常に真です。私は彼のコメントから作業を進めていました。「モデルはかなり小さく、メモリに保存することができます。私はあなたが両方のセットのコピーをRAM上に持っていて、計算がGPUのメモリにセットされていて、GPUのメモリに現在の値をコピーするための '転送'オペレーションを書いて、しかし、私はもはや一緒に一緒にメモリに収まるようになったら、他のオプションを探ることに目を向けるだろう。 –

関連する問題