あなたが探しているのはワンホットエンコーディングではありません。多分これはあなたが達成したいものです。
a = tf.constant([20, 1, 5, 3, 123, 4])
c = tf.cast(tf.equal(a, 3), tf.int32) # 3 is your matching element
with tf.Session() as sess:
print(c.eval())
# [0 0 0 1 0 0]
EDIT
すでにインデックスについての知識を持っている場合は、複数の方法でこれを行うことができます。
a = tf.constant([20, 1, 5, 3, 123, 4, 3])
c = tf.cast(tf.equal(a, a[3]), tf.int32)
with tf.Session() as sess:
print(c.eval())
# [0 0 0 1 0 0 1]
をしかし、あなたは値が繰り返されないことが確実な場合は、次のようなnumpyの配列の助けを借りて、このテンソルを構築することができます。 繰り返すことができ、あなたのテンソルの値チャンスがあるならば、あなたはこのような何かを行うことができますこの:新しく編集された質問に基づいて
import numpy as np
c = np.zeros((7), np.int32)
c[3] = 1
c_tensor = tf.constant(c)
with tf.Session() as sess:
print(c_tensor.eval())
# [0 0 0 1 0 0 0]
EDIT 2
、あなたがカスタムbackpropogationをしていないように私には見えるので、分類タスクを行うとするために、私はYを与えてみましょうあなたが探している部分のスケルトンコード。
tf.reset_default_graph()
X = tf.placeholder(tf.float32, (None, 224, 224, 3))
y = tf.placeholder(tf.int32, (None))
one_hot_y = tf.one_hot(y, n_outputs) # Generate one-hot vector
logits = My_Network(X) # This function returns your network.
cross_entropy = tf.reduce_sum(tf.nn.softmax_cross_entropy_with_logits(logits, one_hot_y))
# This function will compute softmax and get the loss function which you
# would like to minimize.
optimizer = tf.train.AdamOptimizer(learning_rate = 0.01).minimize(cross_entropy)
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
for **each epoch**:
for **generate batches of your data**:
sess.run(optimizer, feed_dict = {X: batch_x, y: batch_y})
コードを理解するのに少し時間を費やしてください。私はまた、分類タスクについての手引きに従うことをお勧めします。私はあなたにCNN by TensorFlowを提案します。
「a」は出力配列のサイズのみを定義していますか? 'index_number'は次元が0の' Tensor'ですか? –
@VladimirBystricky投稿を編集しました。 – user3595632
良い答えが必要な場合は、さらに例を挙げてください。今あなたの問題はよく定義されていません。 –