tf.compat.v1.where
Возвращает элементы либо из x, либо из y, в зависимости от condition.
tf.compat.v1.where(
condition, x=None, y=None, name=None
)
Переход на TF2
Этот API совместим с eager execution и tf.function. Однако это устаревшая конечная точка API, изначально разработанная для TF1. Чтобы перейти на полностью нативный TF2, замените ее использование на tf.where, которая напрямую обратно совместима с tf.compat.v1.where.
Однако tf.compat.v1.where имеет более строгие ограничения, чем tf.where: она требует, чтобы x и y имели одинаковую форму, и возвращает Tensor того же типа и формы, что и x, y (если они оба не равны None).
tf.where принимает x, y, имеющие разные формы, если они совместимы для broadcasting друг с другом и с condition, и возвращает Tensor с формой, полученной в результате broadcasting condition, x и y.
Например, следующий код работает с tf.where, но не с tf.compat.v1.where:
tf.where([True, False, False, True], [1,2,3,4], [100]) <tf.Tensor: shape=(4,), dtype=int32, numpy=array([ 1, 100, 100, 4], dtype=int32)>
tf.where(True, [1,2,3,4], 100) <tf.Tensor: shape=(4,), dtype=int32, numpy=array([1, 2, 3, 4], dtype=int32)>
Описание
Если и x, и y равны None, эта операция возвращает координаты элементов condition, имеющих значение true. Координаты возвращаются в двумерном тензоре, где первое измерение (строки) представляет количество элементов со значением true, а второе измерение (столбцы) содержит координаты этих элементов. Обратите внимание: форма выходного тензора может меняться в зависимости от количества значений true во входных данных. Индексы выводятся в построчном порядке.
Если оба значения не равны None, x и y должны иметь одинаковую форму. Тензор condition должен быть скаляром, если x и y — скаляры. Если x и y — тензоры более высокого ранга, то condition должен быть либо вектором, размер которого совпадает с первым измерением x, либо иметь ту же форму, что и x.
Тензор condition служит маской, которая на основе значения каждого элемента выбирает, следует ли взять соответствующий элемент или строку результата из x (если значение true) или из y (если значение false).
Если condition — вектор, а x и y — матрицы более высокого ранга, он выбирает строку (внешнее измерение), которую следует скопировать из x и y. Если condition имеет ту же форму, что и x и y, он выбирает элемент, который следует скопировать из x и y.
| Аргументы | |
|---|---|
condition | bool типа Tensor |
x | Тензор, который может иметь ту же форму, что и condition. Если ранг condition равен 1, x может иметь более высокий ранг, но его первое измерение должно совпадать с размером condition. |
y | tensor с теми же формой и типом, что и x. |
name | Имя операции (необязательно) |
| Возвращает | |
|---|---|
Tensor того же типа и формы, что и x, y, если они не равны None. В противном случае — Tensor с формой (num_true, rank(condition)). |
| Вызывает исключения | |
|---|---|
ValueError | Если одно из значений — x или y — равно None, а другое нет. |
© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/api_docs/python/tf/compat/v1/where