2016-06-18 4 views
2

すべてのトレーニングエポック後にモデルを保存するためにtf.train.Saver()を使用すると、正確に何が保存されているのでしょうか。このファイルは、私がKerasモデルで慣れ親しんでいたものと比べると大きく見えます。現在、私のRNNは各保存時に900 MBを消費します。保護者に訓練可能なパラメータのみを保存するように指示する方法はありますか?モデルの一部だけを保存する方法も好きです。私が定義した変数をnumpy形式で保存できるのは分かっていますが、RNNクラスを使用しているときは、直接その重みにアクセスすることはできません。コードを見て、私が見ることができるget_weights 。Tensorflow、tf.train.Saverで保存されるものは?

答えて

2

あなたはSavervar_listを指定しない場合、すなわちsaver=tf.train.Saver(var_list=tf.trainable_variables())

+0

一部の変数は訓練可能ではありませんが、まだセーバーによって保存されているため、これは不完全です。 – Conchylicultor

1

それは、デフォルトですべてのvariables._all_saveable_objects()が保存されます、Saverコンストラクタで保存する変数のリストを提供することができます。

つまり、Saverはデフォルトですべてのグローバル変数と保存可能な変数を保存します。

def _all_saveable_objects(): 
    """Returns all variables and `SaveableObject`s that must be checkpointed. 

    Returns: 
    A list of `Variable` and `SaveableObject` to be checkpointed 
    """ 
    # TODO(andreasst): make this function public once things are settled. 
    return (ops.get_collection(ops.GraphKeys.GLOBAL_VARIABLES) + 
      ops.get_collection(ops.GraphKeys.SAVEABLE_OBJECTS)) 
関連する問題