2017-12-01 3 views
1

変数と変数を排除しながら:保存Tensorflowグラフと変数を使用したアダム・オプティマイザー私はテンソルフローグラフを保存しています

builder = tf.saved_model.builder.SavedModelBuilder(export_dir) 
builder.add_meta_graph_and_variables(sess, ["nn"]) 
builder.save(as_text=False) 

は私がして分類を実行可能なファイル保存最小にしたいと思います。具体的には、トレーニング中に作成されたAdam変数を保存ファイルから除外したいと考えています。

私は前に節約にtf.all_variables()によって返された値に反復すると、私は期待していた変数が好きな取得:

tf.Variable 'mymodel/fully_connected/weights:0' shape=(128, 100) dtype=float32_ref 

しかし、また同じの2つのアダムのコピー:

tf.Variable 'mymodel/train/mymodel/fully_connected/weights/Adam:0' shape=(128, 100) dtype=float32_ref 

tf.Variable 'mymodel/train/mymodel/fully_connected/weights/Adam_1:0' shape=(128, 100) dtype=float32_ref 

このトリプル私のチェックポイントファイルのサイズは、ターゲットシステムによって制約されています。保存ファイルはトレーニングではなく分類にのみ使用されるため、Adamオプティマイザ変数は必要ありません。

どのようにしてこれらのファイルを保存ファイルに書き込むのが最も簡単にできないかについてのご意見はありますか?

分類を実行できるうちに保存ファイルのサイズを縮小するための他の提案は高く評価されます。

答えて

1

私は、次のコードを使用して作業し、物事を取得することになりました。

私はこのようなグラフ、重み、偏見などを保存:

with tf.Session(graph=tf.Graph()) as sess: 
    // Checkpoint of trained model that has Adam optimizer variables 
    tf.saved_model.loader.load(sess, ["audio_nn"], FLAGS.checkpoint_dir) 

    # Dump out checkpoint without Adam optimizer variables 
    saver = tf.train.Saver(tf.model_variables()) 
    saver.save(sess, 'my-model') 

幸いtf.model_variablesは()のみのモデルのために必要な変数ではなくアダム・オプティマイザ変数を返しました。

そして、このような分類のために復元:

with tf.Session(graph=tf.Graph()) as sess: 
    imported_meta = tf.train.import_meta_graph("my-model.meta") 
    imported_meta.restore(sess, "my-model") 

    features_tensor = sess.graph.get_tensor_by_name(params.INPUT_TENSOR_NAME) 
    prediction_tensor = sess.graph.get_tensor_by_name('mymodel/prediction:0') 

    ... prediction code ... 

チェックポイントファイルは、以前のように、今三分の一のサイズです。

関連する問題