2017-03-27 12 views
0

私はTFに分類モデルを持ち、次のクラス(pred)の確率リストを得ることができます。今、私は最高の要素(argmax)を選択したいとそのクラスラベルを表示します。TensorFlow予測からクラスラベルを取得する方法

これはばかげているかもしれませんが、予測テンソルの位置に一致するクラスラベルを取得するにはどうすればよいですか?

 feed_dict={g['x']: current_char} 
     preds, state = sess.run([g['preds'],g['final_state']], feed_dict) 
     prediction = tf.argmax(preds, 1) 

predsは私に各クラスの予測のベクトルを与えます。確かに、最も可能性の高いクラス(ラベル)を出力する簡単な方法が必要ですか?

私のモデルに関するいくつかの情報:

x = tf.placeholder(tf.int32, [None, num_steps], name='input_placeholder') 
y = tf.placeholder(tf.int32, [None, 1], name='labels_placeholder') 
batch_size = batch_size = tf.shape(x)[0] 
x_one_hot = tf.one_hot(x, num_classes) 
rnn_inputs = [tf.squeeze(i, squeeze_dims=[1]) for i in 
       tf.split(x_one_hot, num_steps, 1)] 

tmp = tf.stack(rnn_inputs) 
print(tmp.get_shape()) 
tmp2 = tf.transpose(tmp, perm=[1, 0, 2]) 
print(tmp2.get_shape()) 
rnn_inputs = tmp2 


with tf.variable_scope('softmax'): 
    W = tf.get_variable('W', [state_size, num_classes]) 
    b = tf.get_variable('b', [num_classes], initializer=tf.constant_initializer(0.0)) 


rnn_outputs = rnn_outputs[:, num_steps - 1, :] 
rnn_outputs = tf.reshape(rnn_outputs, [-1, state_size]) 
y_reshaped = tf.reshape(y, [-1]) 
logits = tf.matmul(rnn_outputs, W) + b 
predictions = tf.nn.softmax(logits) 

答えて

0

あなたはこのためにtf.reduce_max()を使用することができます。私はthis answerにあなたを紹介します。 動作するかどうか教えてください - そうでない場合は編集します。

+0

ありがとうございますが、私が最大値を知っていれば、私はまだどのクラスラベルが対応しているのか混乱しています。 – dorien

+1

申し訳ありません。しかし、これは予測値(例えば、0.8)を与える。 .8が属するクラスを知るためにそこからどうやって行くのですか? – dorien

+0

私は同じ疑念も持っています。これを呼び出した後、与えられたクラスの最大確率を得ます。この確率をラベルに変換する方法は? –

関連する問題