2017-12-01 14 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 

을하지만 같은 두 아담 복사 :

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 ... 

검사 점 파일은 이전과 지금은 약 1/3 크기입니다.