tf.where
| Просмотреть исходный код на GitHub |
Возвращает элементы, где condition равно True (многократное использование x и y).
tf.where(
condition, x=None, y=None, name=None
)
Этот оператор имеет два режима: в одном режиме и x и y предоставлены, в другом режиме ни один из них не предоставлен. condition всегда должен быть tf.Tensor типа bool.
Получение индексов элементов True
Если x и y не предоставлены (оба равны None):
tf.where вернет индексы condition, которые равны True, в виде двумерного тензора с формой (n, d). (Где n — количество соответствующих индексов в condition, а d — количество измерений в condition).
Индексы выводятся в порядке следования строк.
tf.where([True, False, False, True])
<tf.Tensor: shape=(2, 1), dtype=int64, numpy=
array([[0],
[3]])>
tf.where([[True, False], [False, True]])
<tf.Tensor: shape=(2, 2), dtype=int64, numpy=
array([[0, 0],
[1, 1]])>
tf.where([[[True, False], [False, True], [True, True]]])
<tf.Tensor: shape=(4, 3), dtype=int64, numpy=
array([[0, 0, 0],
[0, 1, 1],
[0, 2, 0],
[0, 2, 1]])>
Многократное использование между x и y
Если x и y предоставлены (оба имеют значения, отличные от None):
tf.where выберет форму вывода из форм condition, x, и y, для которых все три формы являются совместимыми для трансляции.
Тензор condition действует как маска, которая выбирает, следует ли брать соответствующий элемент/строку в выводе из x (если элемент в condition is True) ory` (если он ложный).
tf.where([True, False, False, True], [1,2,3,4], [100,200,300,400]) <tf.Tensor: shape=(4,), dtype=int32, numpy=array([ 1, 200, 300, 4], dtype=int32)> 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, 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, False, False, True], 1, 100) <tf.Tensor: shape=(4,), dtype=int32, numpy=array([ 1, 100, 100, 1], dtype=int32)>
tf.where(True, [1,2,3,4], 100) <tf.Tensor: shape=(4,), dtype=int32, numpy=array([1, 2, 3, 4], dtype=int32)> tf.where(False, [1,2,3,4], 100) <tf.Tensor: shape=(4,), dtype=int32, numpy=array([100, 100, 100, 100], dtype=int32)>
| Аргументы | |
|---|---|
condition | tf.Tensor типа bool |
x | Если предоставлено, тензор того же типа, что и y, и его форма совместима для трансляции с condition и y. |
y | Если предоставлено, тензор того же типа, что и y, и его форма совместима для трансляции с condition и x. |
name | Имя операции (необязательно). |
| Возвращаемое значение | |
|---|---|
Если x и y предоставлены: тензор Tensor того же типа, что и x и y, и форма, которая транслируется из condition, x, и y. В противном случае, тензор Tensor с формой (num_true, dim_size(condition)). |
| Возбуждаемые исключения | |
|---|---|
ValueError | При предоставлении ровно одного из x или y (не равного None), или формы не все совместимы для трансляции. |
© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.3/api_docs/python/tf/where