switch_case

    api_attr

    声明式编程模式(静态图)

    该OP的运行方式类似于c++的switch/case。

    参数:

    • branch_index (Tensor)- 形状为[1]的Tensor,指定将要执行的分支。数据类型是 int32, int64uint8

    • branch_fns (dict|list|tuple) - 如果 branch_fns 是一个list或tuple,它的元素可以是 (int, callable) 二元组,即由整数和可调用对象构成的二元组,整数表示对应的可调用对象的键;也可以仅仅是可调用对象,它在list或者tuple中的实际索引值将作为该可调用对象的键。如果 branch_fns 是一个字典,那么它的键是整数,它的值是可调用对象。所有的可调用对象都返回相同结构的Tensor。

    返回:如果 branch_fns 中存在与 branch_index 匹配的可调用对象,则返回该可调用对象的返回结果;如果 branch_fns 中不存在与 branch_index 匹配的可调用对象且 default 不是None,则返回调用 的返回结果; 如果 branch_fns 中不存在与 branch_index 匹配的可调用对象且 default 是None,则返回 branch_fns 中键值最大的可调用对象的返回结果。

    返回类型:Tensor|list(Tensor)

    抛出异常:

    • TypeError - 如果 branch_index 的类型不是list或tuple。

    • TypeError - 如果 branch_index 的数据类型不是 int32int64 或 。

    • TypeError - 如果 branch_fns 中的2-tuple的第一个元素的类型不是整数。

    • ValueError - 如果 branch_fns 中的2-tuple的第一个元素值不唯一。

    • TypeError - 如果 branch_fns 中的2-tuple的第二个元素不是可调用对象。

    代码示例