2016-04-24 5 views
0

各サンプルのラベルの数はマトリックスに保存されます。真のラベルは別の1D tensoryに格納されますが、真のラベルのスコアは(batch_size)に格納されます。 どうすればいいですか? 私はTheanoまたはNumpyでそれを知っています。これは、単一の式で行うことができます:X[y]。 しかし、TensorFlowでは、これを達成するのに最も便利な、または費用のかからない方法は何ですか?TensorFlow、(batch_size x num_labels)+(batch_size) - >(batch_size)

X = tf.get_variable("X",[batch_size,num_labels]) 
y = tf.placeholder(tf.int32,[batch_size]) 

0 <= y[i] <= num_labels - 1。出力zは、私はXの各クラスとバッチたとえば、あなたは真のラベルの確率を取得したいという確率を含むベクトルであることを理解しz[i]= X[i][y[i]]

+0

[MCVE](http://stackoverflow.com/help/mcve)を教えてください。 –

+0

ねえ。私は例を追加します。私の言いたいことが分かりますか。?ありがとう – user3903457

答えて

0

1Dtensorでなければなりません。最適なものではないかもしれませんが、私は解決策として提案します。

# Create mask for values 
increasing = tf.range(start=0, limit=tf.shape(X)[0], delta=1) 

# Concatenate batch index and true label 
# Note that in Tensorflow < 1.0.0 you must call tf.pack 
mask = tf.stack([increasing, y], axis=1) 

# Extract values 
masked = tf.gather_nd(params=X, indices=mask) 

希望します。

関連する問題