#python #tensorflow
#python #tensorflow
Вопрос:
Я пытаюсь объединить тензоры следующим образом:
a = [0, 0, 1, 1, 1, 2]
b = [[1, 2], [3, 4],
[5, 6], [7, 8], [9, 10],
[11, 12]]
вывод:
c = [[[1, 2], [3, 4]],
[[5, 6], [7, 8] ,[9, 10]],
[[11, 12]]]
Таким образом, по сути, a — это индексы тензора b во втором измерении.
Формы следующие:
a = (?,) #(6) in this example
b = (?, 2) #(6, 2) in this example
c = (?, ?, 2) #(batch_size aka 3, varies, maybe I need a ragged tensor, 2)
Более подробное объяснение:
Я пытаюсь отфильтровать тензор, сохраняя исходный размер пакета. Когда я запускаю следующее, приведенное выше является упрощенным выводом:
pos = tf.where(box_class_scores >= confidence)
g_boxes = tf.gather_nd(boxes, pos) # this is b
indicies = tf.cast(pos[:, 0], tf.float32) #this is a
Мне нужно сделать выше, чтобы сохранить размер пакета для модели. Я использую Tensorflow 1.14 (это требование)
Любая помощь приветствуется.
Ответ №1:
Ответ — это конструктор неровного тензора для всех, кто ищет это:
tf.RaggedTensor.from_value_rowids(
values=b,
value_rowids=a)