接著我們要把我們的模組進行優化,優化的內容包括了:「刪除只在訓練過程需要的節點、刪除除錯節點、去除尚未使用到的圖表部份、將共同的結點合成統一的版本」,先前輸入節點命名為I已及輸出節點命名為O,這些名稱使用時會對應到當時所定義的張量
import tensorflow as tf
from tensorflow.python.tools import optimize_for_inference_lib
output_frozen_graph = 'frozen_android_tf.pb'
output_optimized_graph = 'optimized_android_tf.pb'
input_graph = tf.GraphDef()
with tf.gfile.Open(output_frozen_graph, "rb") as f:
data = f.read()
input_graph.ParseFromString(data)
output_graph = optimize_for_inference_lib.optimize_for_inference(
input_graph,
["I"],
["O"],
tf.float32.as_datatype_enum)
f = tf.gfile.FastGFile(output_optimized_graph, "w")
f.write(output_graph.SerializeToString())