Tensorflowチュートリアル の例と非常によく似たtf.nn.seq2seq.model_with_buckets
をseq2seq = tf.nn.seq2seq.embedding_attention_seq2seq
でトレーニングしました。
freeze_graph.py
を使用してグラフをフリーズしたいと思います。モデルで「output_node_names」を見つけるにはどうすればよいですか?
オプションのname="myname"
引数を、ノードを構築するほとんどすべてのTensorflow演算子に渡すことにより、モデル内のノードの名前を選択できます。 Tensorflowはグラフノードの名前を指定しない場合は自動的に選択しますが、freeze_graph.pyなどのツールでそれらのノードを識別したい場合は、自分で名前を選択するのが最善です。これらの名前は、output_node_namesに渡すものです。
モデル内のすべてのノード名を取得するには、次のようにします。
node_names = [node.name for node in tf.get_default_graph().as_graph_def().node]
またはグラフを復元すると:
saver = tf.train.import_meta_graph(/path/to/meta/graph)
sess = tf.Session()
saver.restore(sess, /path/to/checkpoints)
graph = sess.graph
print([node.name for node in graph.as_graph_def().node])
これらをフィルタリングして、出力ノードのみ、または必要なノードのみを取得する必要がある場合がありますが、これは少なくとも、すでにトレーニング済みでname='some_name'
で再トレーニングする余裕がないグラフの名前を取得するのに役立ちます。各ノードに定義されます。
理想的には、後でアクセスする操作またはテンソルごとにname
パラメーターを定義する必要があります。