Vengineerの妄想(準備期間)

人生は短いけど、長いです。人生を楽しみましょう!

Intel's Deep Learning Inference Engine Developer Guide


TensorFlowのFreeze Graph ツールTensorFlowのGraph Transformツールって、
どんなところで使われているのでしょうか?

Intel's Deep Learning Inference Engine Developer Guideにて、freeze_graphコマンド、summarized_graphコマンドが使われています。

Converting Your TensorFlow* Modelにあるように、TensorFlowモデルをIntelのModel Optimizerに入力する前にいろいろと。

引用
    $ python3 modeloptimizer/scripts/model_optimizer.py \
    --input_model=/tmp/frozen_inception_v1.pb \
    --input=input \
    --output=InceptionV1/Logits/Predictions/Reshape_1 \
    --data_type=float \
    --input_shape 1,224,224,3 \
    --model_name InceptionV1

色々やった後のモデル (frozen_inception_v1.pb)で、
入力ノードはinput、出力ノードは、InceptionV1/Logits/Predictions/Reshape_1、
データタイプは、floatで、入力データは、(1,224,224,3)、モデルの名前を、InceptionV1 に。

model_optimizer.pyコマンドは、
    ・InceptionV1.xml : モデルのIR
    ・InceptionV1.bin : ウェイト
を出力するようです。

https://software.intel.com/sites/default/files/did_feeds_images/70a8dc72-4a77-41fb-9c15-507f05dc1529/70a8dc72-4a77-41fb-9c15-507f05dc1529-imageId=dca4d1a2-e6b8-4fc2-9c56-ba2abac00f6d.png

また、--transformsパラメータで 変換 を指定することができるようです。
TensorFlowのtransform_graphコマンドと同じようなもんですね。

--transformsパラメータを指定しないと、デフォルトして下記を指定したことになっているようです。
引用
    ・strip_unused_nodes(type=<data_type>;shape=<input_shape>)
    ・remove_nodes(op=Identity)
    ・remove_nodes(op=CheckNumerics)
    ・fold_constants(ignore_errors=true)
    ・fold_batch_norms
    ・strip_unused_nodes(type=<data_type>; shape=<input_shape>)
    ・remove_nodes(op=Identity)
    ・remove_nodes(op=CheckNumerics)
    ・fold_constants(ignore_errors=true)
    ・fold_batch_norms
    ・strip_unused_nodes(type=<data_type>; shape=<input_shape>)
    ・remove_nodes(op=Identity)
    ・remove_nodes(op=CheckNumerics)
    ・fold_constants(ignore_errors=true)
    ・fold_batch_norms
    ・calc_shapes(input_types=<data_type>; input_shapes=<input_shape>)
    ・create_ir(model_name=<model_name>; output_dir=<output_dir>; scale=<scale>)

なんか、TensorFlowのtransform_graphコマンドと同じ変換を使っているようですね。

Model Optimizer用の変換は、次の2つだけのようです。
  ・calc_shapes
    ・create_ir

デフォルトでの変換の最後の2つですね。