Selects elements from true and false tensors based on a condition tensor into an output tensor. When applicable, broadcasting is used (refer to Shape Information for more information).


true: tensor of type T1.

false: tensor of type T1.

condition: tensor of type T2.


output: tensor of type T1.

Data Types

T1: int32, float16, float32

T2: bool

Shape Information

true, false, and condition tensors must have the same rank. For each dimension, their lengths must match, or one of them must be equal to 1. In the latter case, the tensor is broadcast along that axis.

The output tensor has the same rank as the inputs. For each output dimension, its length is equal to the lengths of the corresponding input dimensions if they match, otherwise it is equal to the length that is not 1.


condition_input = network.add_input("condition", dtype=trt.bool, shape=(2, 5))
true_input = network.add_input("true", dtype=trt.float32, shape=(2, 5))
false_input = network.add_input("false", dtype=trt.float32, shape=(1, 5))
layer = network.add_select(condition_input, true_input, false_input)

inputs[] = np.array([[True, True, False, False, True], [False, True, False, False, True]])
inputs[] = np.array([[1.0, 1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0]])
inputs[] = np.array([[0.0, 0.0, 0.0, 0.0, 0.0]])

outputs[layer.get_output(0).name] = layer.get_output(0).shape
expected[layer.get_output(0).name] = np.array([[1.0, 1.0, 0.0, 0.0, 1.0], [0.0, 1.0, 0.0, 0.0, 1.0]])


For more information about the C++ ISelectLayer operator, refer to the C++ ISelectLayer documentation.

Python API

For more information about the Python ISelectLayer operator, refer to the Python ISelectLayer documentation.