mindspore.ops.Depend

查看源文件
class mindspore.ops.Depend[源代码]

用来处理操作间的依赖关系。

在大多数情况下,如果操作有作用在IO或内存上的副作用,它们将按照用户的指令依序执行。在某些情况下,如果两个操作A和B没有顺序上的依赖性,而A必须在B之前执行,我们建议使用Depend来指定它们的执行顺序。使用方法如下:

a = A(x)                --->        a = A(x)
b = B(y)                --->        y = Depend(y, a)
                        --->        b = B(y)
输入:
  • value (Tensor) - 应被Depend操作符返回的Tensor。

  • expr (Expression) - 应被执行的无输出的表达式。

输出:

Tensor,作为 value 传入的变量。

支持平台:

Ascend GPU CPU

样例:

>>> import numpy as np
>>> import mindspore
>>> import mindspore.nn as nn
>>> from mindspore import ops
>>> from mindspore import Tensor
>>> class Net(nn.Cell):
...     def __init__(self):
...         super(Net, self).__init__()
...         self.softmax = ops.Softmax()
...         self.depend = ops.Depend()
...
...     def construct(self, x, y):
...         mul = x * y
...         y = self.depend(y, mul)
...         ret = self.softmax(y)
...         return ret
...
>>> x = Tensor(np.ones([4, 5]), dtype=mindspore.float32)
>>> y = Tensor(np.ones([4, 5]), dtype=mindspore.float32)
>>> net = Net()
>>> output = net(x, y)
>>> print(output)
[[0.2 0.2 0.2 0.2 0.2]
 [0.2 0.2 0.2 0.2 0.2]
 [0.2 0.2 0.2 0.2 0.2]
 [0.2 0.2 0.2 0.2 0.2]]