Правильный способ векторизации шага тензорного потока
Я работаю с 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))
Но если это не так, у вас просто не может быть такого тензора, потому что второе измерение должно иметь несколько размеров.