Выбор по маске в TensorFlow
Если из ряда нужны только те
числа, где выполняется проверка,
помогает функция
boolean_mask. Сначала
строят логический тензор той же
формы, чаще всего через сравнение,
затем в результат попадают лишь
ячейки с истиной.
Создадим ряд оценок и оставим
значения строго больше 3:
import tensorflow as tf
scores = tf.constant([1, 4, 3, 5, 2])
mask = scores > 3
high = tf.boolean_mask(scores, mask)
print(high)
# выведет tf.Tensor([4 5], shape=(2,), dtype=int32)
Сравнение можно применить к каждой ячейке таблицы. Тогда в одномерный ряд попадут все подходящие числа подряд по порядку обхода:
import tensorflow as tf
grid = tf.constant([[1, 8, 3], [6, 2, 9]])
big = grid > 5
filtered = tf.boolean_mask(grid, big)
print(filtered)
# выведет tf.Tensor([8 6 9], shape=(3,), dtype=int32)
Параметр axis задаёт,
вдоль какой оси действует
логический ряд. Оставим в
таблице только второй и третий
столбец:
import tensorflow as tf
table = tf.constant([[1, 2, 3], [4, 5, 6]])
col_ok = tf.constant([False, True, True])
slim = tf.boolean_mask(table, col_ok, axis=1)
print(slim)
# выведет tf.Tensor([[2 3] [5 6]], shape=(2, 2), dtype=int32)
Создайте ряд температур
[12, 25, 8, 30, 19],
оставьте только значения не
меньше 20 и выведите
получившийся ряд.
Задайте таблицу [[2, 7], [9, 4]],
сохраните в ряд все ячейки,
где число больше 5,
и выведите его.
Соберите таблицу из строк
[10, 20, 30] и
[40, 50, 60],
уберите из неё первый столбец
и выведите оставшуюся таблицу.