tf.compat.v1.where
Возвращает элементы, либо из x, либо из y, в зависимости от condition.
tf.compat.v1.where(
condition, x=None, y=None, name=None
)
Переход к TF2
Данный API совместим с выполнением eager и tf.function. Тем не менее, это всё ещё API-точка доступа legacy, изначально предназначенная для TF1. Для миграции на полностью native 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. Координаты возвращаются в тензоре 2-го порядка, где первая размерность (строки) представляет количество истинных элементов, а вторая размерность (столбцы) представляет координаты истинных элементов. Обратите внимание, форма выходного тензора может меняться в зависимости от того, сколько истинных значений есть во входе. Индексы выводятся в порядке следования строк.
Если оба не 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 | A Tensor типа bool |
x | A Tensor, который может иметь такую же форму, как condition. Если condition имеет ранг 1, x может иметь больший ранг, но его первая размерность должна соответствовать размеру condition. |
y | A tensor с такой же формой и типом, как у x. |
name | Имя операции (необязательно) |
| Возвращаемое значение | |
|---|---|
A Tensor с тем же типом и формой, что и x, y, если они не None. В противном случае, a 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