tf.compat.v1.where
Возвращает элементы из x или y, в зависимости от condition.
tf.compat.v1.where(
condition, x=None, y=None, name=None
)
Миграция на TF2
Этот API совместим с выполнением eager и 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, которые не имеют одинаковой формы, при условии, что они совместимы по трансляции друг с другом и с condition, и вернёт тензор Tensor с формой, транслируемой из 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. Координаты возвращаются в двумерном тензоре, где первая размерность (строки) представляет количество истинных элементов, а вторая размерность (столбцы) представляет координаты истинных элементов. Имейте в виду, что форма выходного тензора может меняться в зависимости от того, сколько истинных значений находится во входных данных. Индексы выводятся в порядке следования строк.
Если оба значения не равны None, x и y должны иметь одинаковую форму. Тензор condition должен быть скалярным, если x и y являются скалярами. Если x и y являются тензорами более высокой размерности, то condition должен быть либо вектором с размером, соответствующим первой размерности x, либо должен иметь ту же форму, что и x.
Тензор condition действует как маска, которая выбирает, в зависимости от значения в каждом элементе, следует ли брать соответствующий элемент/строку в выходе из x (если истинно) или y (если ложно).
Если condition является вектором, а x и y являются матрицами более высокой размерности, то он выбирает, какую строку (внешнюю размерность) скопировать из x и y. Если condition имеет ту же форму, что и x и y, то он выбирает, какой элемент скопировать из x и y.
| Аргументы | |
|---|---|
condition | Тензор типа Tensor |
x | Тензор, который может иметь ту же форму, что и condition. Если condition имеет ранг 1, x может иметь более высокий ранг, но его первая размерность должна соответствовать размеру condition. |
y | Тензор с той же формой и типом, что и x. |
name | Имя операции (необязательно) |
| Возвращает | |
|---|---|
Тензор с тем же типом и формой, что и x, y , если они не None. В противном случае тензор с формой (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/versions/r2.9/api_docs/python/tf/compat/v1/where