Во-первых, я попытался понять ваш код, поэтому я просто реализовал его в classi c python с
a = [100,200,300,300,100,200,200,100,300,300]
b = sorted(set(a))
c = [4, 5, 6]
d = [0]*len(a)
for i in range(len(a)):
j = b.index(a[i])
d[i] = d[i] + a[i]*c[j]
print("a ", a)
print("b ", b)
print("c ", c)
print("d ", d)
, что дает мне результат
a [100, 200, 300, 300, 100, 200, 200, 100, 300, 300]
b [100, 200, 300]
c [4, 5, 6]
d [400, 1000, 1800, 1800, 400, 1000, 1000, 400, 1800, 1800]
Затем я попытался сделать то же самое в тензорном потоке и сделал
a = tf.convert_to_tensor([100,200,300,300,100,200,200,100,300,300])
b, idx = tf.unique(a)
b = tf.sort(b)
c = tf.convert_to_tensor([4, 5, 6])
one_hot_a = tf.one_hot(idx, depth=b.shape[0], dtype=tf.int32)
tf.reduce_sum(one_hot_a * b*c, axis=-1)
, который дает тот же результат:
<tf.Tensor: id=486, shape=(10,), dtype=int32, numpy=array([ 400, 1000, 1800, 1800, 400, 1000, 1000, 400, 1800, 1800])>
Может быть, вы можете дать нам некоторые данные, чтобы узнать, действительно ли это что вас ожидает?