Правильный способ векторизации шага тензорного потока

Я работаю с 4-мерными тензорами, и мне нужно сделать пару вычислений, которые работают как в следующем примере. принимать A быть тензором с формой (6,64,64,64), Я хочу использовать функцию tf.where чтобы получить воксели каждого (64,64,64) объем, который имеет значение больше, чем 0.75, Единственный способ, которым мне удалось сделать это, это так:

X = tf.convert_to_tensor([tf.where(A[i,:,:,:] > 0.75) for i in range(A.shape[0])]

Это кажется очень грубым решением. Есть ли лучший способ добиться этого?

1 ответ

Решение

Проблема с тем, что вы пытаетесь сделать, заключается в том, что это требует, чтобы каждый (64, 64, 64) Объем имеет то же количество значений, больше 0,75. Если это так, вы можете просто сделать следующее:

X = tf.reshape(tf.where(A > 0.75)[:, 1:], (A.shape[0], -1, A.shape.ndims - 1))

Но если это не так, у вас просто не может быть такого тензора, потому что второе измерение должно иметь несколько размеров.

Другие вопросы по тегам