Vengineerの妄想(準備期間)

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

TensorFlowのGraph Transformツール



freeze_graphコマンドにて、モデルの変数を定数に変えたら、モデルを graph_transforms コマンドにて、最適化します。

引用
    bazel build tensorflow/tools/graph_transforms:transform_graph

    bazel-bin/tensorflow/tools/graph_transforms/transform_graph \
    --in_graph=tensorflow_inception_graph.pb \
    --out_graph=optimized_inception_graph.pb \
    --inputs='Mul:0' \
    --outputs='softmax:0' \
    --transforms='
    strip_unused_nodes(type=float, shape="1,299,299,3")
    remove_nodes(op=Identity, op=CheckNumerics)
    fold_old_batch_norms
    '

いつものように、bazelコマンドでビルドしましょうね。

transform_graph コマンドの各パラメータ
    --in_graphパラメータは、入力モデルファイル (.pb)
    --out_graphパラメータは、出力モデルファイル (.pb)
    --inputsパラメータは、入力ノード(''で囲むので複数あってもいい)
    --outputsパラメータは、出力ノード(''で囲むので複数あってもいい)
    --transformsパラメータは、""でいろいろな変換を順番にしていできます。指定した順番に実行されます。

上の例では、
    入力モデルは、tensorflow_inception_graph.pb
    出力モデルは、optimized_inception_graph.pb 
    入力ノードは、Mul:0
    出力ノードは、softmax:0
    変換は、      strip_unused_nodes(type=float, shape="1,299,299,3")
                  remove_nodes(op=Identity, op=CheckNumerics)
                  fold_old_batch_norms
                  を順番に実行

Transform Referenceがあるので、ここにあるものが指定できます。