mindspore.ops.HyperMap

class mindspore.ops.HyperMap(ops=None, reverse=False)[源代码]

对输入序列做集合运算。

对序列的每个元素或嵌套序列进行运算。与 mindspore.ops.Map 不同,HyperMap 能够用于嵌套结构。

参数:
  • ops (Union[MultitypeFuncGraph, None]) - ops 是指定运算操作。如果 ops 为None,则运算应该作为 HyperMap 实例的第一个入参。默认值为None。

  • reverse (bool) - 在某些场景下,需要逆向以提高计算的并行性能,一般情况下,用户可以忽略。reverse 用于决定是否逆向执行运算,仅在图模式下支持。默认值为False。

输入:
  • args (Tuple[sequence]) - 如果 ops 不是None,则所有入参都应该是具有相同长度的序列,并且序列的每一行都是运算的输入。如果 ops 是None,则第一个入参是运算,其余都是输入。

Note

输入数量等于 ops 的输入数量。

输出:

序列或嵌套序列,执行函数如 operation(args[0][i], args[1][i]) 之后输出的序列。

异常:
  • TypeError - 如果 ops 既不是 MultitypeFuncGraph 也不是None。

  • TypeError - 如果 args 不是一个tuple。

支持平台:

Ascend GPU CPU

样例:

>>> from mindspore import Tensor, ops
>>> from mindspore.ops import MultitypeFuncGraph, HyperMap
>>> from mindspore import dtype as mstype
>>> nest_tensor_list = ((Tensor(1, mstype.float32), Tensor(2, mstype.float32)),
...                     (Tensor(3, mstype.float32), Tensor(4, mstype.float32)))
>>> # square all the tensor in the nested list
>>>
>>> square = MultitypeFuncGraph('square')
>>> @square.register("Tensor")
... def square_tensor(x):
...     return ops.square(x)
>>>
>>> common_map = HyperMap()
>>> output = common_map(square, nest_tensor_list)
>>> print(output)
((Tensor(shape=[], dtype=Float32, value= 1), Tensor(shape=[], dtype=Float32, value= 4)),
(Tensor(shape=[], dtype=Float32, value= 9), Tensor(shape=[], dtype=Float32, value= 16)))
>>> square_map = HyperMap(square, False)
>>> output = square_map(nest_tensor_list)
>>> print(output)
((Tensor(shape=[], dtype=Float32, value= 1), Tensor(shape=[], dtype=Float32, value= 4)),
(Tensor(shape=[], dtype=Float32, value= 9), Tensor(shape=[], dtype=Float32, value= 16)))