|
|
|
@ -1464,3 +1464,43 @@ def test_multi_add_assign():
|
|
|
|
|
outputs = [r2.asnumpy(), r1.asnumpy(), net.p.data.asnumpy()]
|
|
|
|
|
expects = numpy_out(p, i0, i1, i2)
|
|
|
|
|
np.testing.assert_array_equal(outputs, expects)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.mark.skip(reason="not supported yet")
|
|
|
|
|
def test_multi_abs_add_assign():
|
|
|
|
|
class Net(Cell):
|
|
|
|
|
def __init__(self, para):
|
|
|
|
|
super(Net, self).__init__()
|
|
|
|
|
self.add = P.Add()
|
|
|
|
|
self.sub = P.Sub()
|
|
|
|
|
self.mul = P.Mul()
|
|
|
|
|
self.abs = P.Abs()
|
|
|
|
|
self.assign = P.Assign()
|
|
|
|
|
self.p = Parameter(para, name='para')
|
|
|
|
|
|
|
|
|
|
def construct(self, a, d, e):
|
|
|
|
|
tmp = self.abs(self.add(self.abs(a), self.abs(self.mul(a, a))))
|
|
|
|
|
res1 = self.add(self.p, tmp)
|
|
|
|
|
mul = self.mul(d, e)
|
|
|
|
|
self.assign(self.p, mul)
|
|
|
|
|
res2 = self.sub(self.p, e)
|
|
|
|
|
return res2, res1, tmp
|
|
|
|
|
|
|
|
|
|
def numpy_out(p, a, d, e):
|
|
|
|
|
tmp = np.abs(np.abs(a) + np.abs(a * a))
|
|
|
|
|
res1 = p + tmp
|
|
|
|
|
res_as = d * e
|
|
|
|
|
res2 = d * e - e
|
|
|
|
|
return res2, res1, res_as, tmp
|
|
|
|
|
|
|
|
|
|
p = -(np.abs(np.random.normal(0, 1, [3])) + 1).astype(np.float32)
|
|
|
|
|
i0 = -(np.abs(np.random.normal(0, 1, [3])) + 1).astype(np.float32)
|
|
|
|
|
i1 = -(np.abs(np.random.normal(0, 1, [3])) + 1).astype(np.float32)
|
|
|
|
|
i2 = -(np.abs(np.random.normal(0, 1, [3])) + 1).astype(np.float32)
|
|
|
|
|
|
|
|
|
|
net = Net(Tensor(p))
|
|
|
|
|
r2, r1, tmp = net(Tensor(i0), Tensor(i1), Tensor(i2))
|
|
|
|
|
|
|
|
|
|
outputs = [r2.asnumpy(), r1.asnumpy(), net.p.data.asnumpy(), tmp.asnumpy()]
|
|
|
|
|
expects = numpy_out(p, i0, i1, i2)
|
|
|
|
|
np.testing.assert_array_equal(outputs, expects)
|
|
|
|
|