2017-10-27 6 views
0

私はテンソルフローニューラルネットを構築しましたが、今ではgraph_util.convert_variables_to_constants関数を実行したいと考えています。ただし、これにはoutput_node_namesパラメータが必要です。ネットでの最後の層は、名前logitを持っており、以下のように構築されています:tf.layersで作成されたテンソルフローグラフの出力ノード

gd = sess.graph_def 
for n in gd.node: 
    if 'logit' in n.name:print(n.name) 

プリント:

logit/kernel/Initializer/random_uniform/shape 
logit/kernel/Initializer/random_uniform/min 
logit/kernel/Initializer/random_uniform/max 
logit/kernel/Initializer/random_uniform/RandomUniform 
logit/kernel/Initializer/random_uniform/sub 
logit/kernel/Initializer/random_uniform/mul 
logit/kernel/Initializer/random_uniform 
logit/kernel 
logit/kernel/Assign 
logit/kernel/read 
logit/bias/Initializer/zeros 
logit/bias 
logit/bias/Assign 
logit/bias/read 
logit/Tensordot/Shape 
logit/Tensordot/Rank 
logit/Tensordot/axes 
... 
logit/Tensordot/Reshape_1 
logit/Tensordot/MatMul 
logit/Tensordot/Const_2 
logit/Tensordot/concat_2/axis 
logit/Tensordot/concat_2 
logit/Tensordot 
logit/BiasAdd 
... 

行う方法

logits = tf.layers.dense(inputs=dropout, units=5, name='logit') 

は、しかし、その範囲内の多くのノードがあります私はこれらのノードのどれが出力ノードであるか調べていますか?

答えて

1

グラフが複雑な場合、一般的な方法は、終了時にアイデンティティ・ノードを追加することである:例えば

output = tf.identity(logits, 'output') 
# you can use the name "output" 

、次のコードは動作するはず:

logits = tf.layers.dense(inputs=dropout, units=5, name='logit') 
output = tf.identity(logits, 'output') 
output_graph_def = tf.graph_util.convert_variables_to_constants(
    ss, tf.get_default_graph().as_graph_def(), ['output']) 
関連する問題