check result of test case

This commit is contained in:
chenfei 2021-04-19 16:11:46 +08:00
parent 3e2c87f65a
commit e150dedc70
14 changed files with 221 additions and 79 deletions

View File

@ -43,7 +43,7 @@ class BackwardNet(nn.Cell):
def __init__(self, net): def __init__(self, net):
super(BackwardNet, self).__init__(auto_prefix=False) super(BackwardNet, self).__init__(auto_prefix=False)
self.forward_net = net self.forward_net = net
self.grad = C.GradOperation() self.grad = C.GradOperation(get_all=True)
def construct(self, *inputs): def construct(self, *inputs):
grads = self.grad(self.forward_net)(*inputs) grads = self.grad(self.forward_net)(*inputs)
@ -54,8 +54,13 @@ def test_forward():
x = Tensor(np.array(1), mstype.int32) x = Tensor(np.array(1), mstype.int32)
y = Tensor(np.array(3), mstype.int32) y = Tensor(np.array(3), mstype.int32)
forward_net = ForwardNet(max_cycles=10) forward_net = ForwardNet(max_cycles=10)
out = forward_net(x, y) # Graph Mode
print("forward out:", out) context.set_context(mode=context.GRAPH_MODE)
graph_mode_out = forward_net(x, y)
# Pynative Mode
context.set_context(mode=context.PYNATIVE_MODE)
pynative_mode_out = forward_net(x, y)
assert graph_mode_out == pynative_mode_out
def test_backward(): def test_backward():
@ -63,5 +68,10 @@ def test_backward():
y = Tensor(np.array(3), mstype.int32) y = Tensor(np.array(3), mstype.int32)
forward_net = ForwardNet(max_cycles=10) forward_net = ForwardNet(max_cycles=10)
backward_net = BackwardNet(forward_net) backward_net = BackwardNet(forward_net)
grads = backward_net(x, y) # Graph Mode
print("grads:", grads) context.set_context(mode=context.GRAPH_MODE)
graph_mode_grads = backward_net(x, y)
# Pynative Mode
context.set_context(mode=context.PYNATIVE_MODE)
pynative_mode_grads = backward_net(x, y)
assert graph_mode_grads == pynative_mode_grads

View File

@ -40,7 +40,7 @@ class BackwardNet(nn.Cell):
def __init__(self, net): def __init__(self, net):
super(BackwardNet, self).__init__(auto_prefix=False) super(BackwardNet, self).__init__(auto_prefix=False)
self.forward_net = net self.forward_net = net
self.grad = C.GradOperation() self.grad = C.GradOperation(get_all=True)
def construct(self, *inputs): def construct(self, *inputs):
grads = self.grad(self.forward_net)(*inputs) grads = self.grad(self.forward_net)(*inputs)
@ -51,8 +51,13 @@ def test_forward():
x = Tensor(np.array(1), mstype.int32) x = Tensor(np.array(1), mstype.int32)
y = Tensor(np.array(3), mstype.int32) y = Tensor(np.array(3), mstype.int32)
forward_net = ForwardNet(max_cycles=3) forward_net = ForwardNet(max_cycles=3)
out = forward_net(x, y) # Graph Mode
print("forward out:", out) context.set_context(mode=context.GRAPH_MODE)
graph_mode_out = forward_net(x, y)
# Pynative Mode
context.set_context(mode=context.PYNATIVE_MODE)
pynative_mode_out = forward_net(x, y)
assert graph_mode_out == pynative_mode_out
def test_backward(): def test_backward():
@ -60,5 +65,10 @@ def test_backward():
y = Tensor(np.array(3), mstype.int32) y = Tensor(np.array(3), mstype.int32)
forward_net = ForwardNet(max_cycles=3) forward_net = ForwardNet(max_cycles=3)
backward_net = BackwardNet(forward_net) backward_net = BackwardNet(forward_net)
grads = backward_net(x, y) # Graph Mode
print("grads:", grads) context.set_context(mode=context.GRAPH_MODE)
graph_mode_grads = backward_net(x, y)
# Pynative Mode
context.set_context(mode=context.PYNATIVE_MODE)
pynative_mode_grads = backward_net(x, y)
assert graph_mode_grads == pynative_mode_grads

View File

@ -44,7 +44,7 @@ class BackwardNet(nn.Cell):
def __init__(self, net): def __init__(self, net):
super(BackwardNet, self).__init__(auto_prefix=False) super(BackwardNet, self).__init__(auto_prefix=False)
self.forward_net = net self.forward_net = net
self.grad = C.GradOperation() self.grad = C.GradOperation(get_all=True)
def construct(self, *inputs): def construct(self, *inputs):
grads = self.grad(self.forward_net)(*inputs) grads = self.grad(self.forward_net)(*inputs)
@ -55,8 +55,13 @@ def test_forward():
x = Tensor(np.array(1), mstype.int32) x = Tensor(np.array(1), mstype.int32)
y = Tensor(np.array(3), mstype.int32) y = Tensor(np.array(3), mstype.int32)
forward_net = ForwardNet(max_cycles=3) forward_net = ForwardNet(max_cycles=3)
out = forward_net(x, y) # Graph Mode
print("forward out:", out) context.set_context(mode=context.GRAPH_MODE)
graph_mode_out = forward_net(x, y)
# Pynative Mode
context.set_context(mode=context.PYNATIVE_MODE)
pynative_mode_out = forward_net(x, y)
assert graph_mode_out == pynative_mode_out
def test_backward(): def test_backward():
@ -64,5 +69,10 @@ def test_backward():
y = Tensor(np.array(3), mstype.int32) y = Tensor(np.array(3), mstype.int32)
forward_net = ForwardNet(max_cycles=3) forward_net = ForwardNet(max_cycles=3)
backward_net = BackwardNet(forward_net) backward_net = BackwardNet(forward_net)
grads = backward_net(x, y) # Graph Mode
print("grads:", grads) context.set_context(mode=context.GRAPH_MODE)
graph_mode_grads = backward_net(x, y)
# Pynative Mode
context.set_context(mode=context.PYNATIVE_MODE)
pynative_mode_grads = backward_net(x, y)
assert graph_mode_grads == pynative_mode_grads

View File

@ -44,7 +44,7 @@ class BackwardNet(nn.Cell):
def __init__(self, net): def __init__(self, net):
super(BackwardNet, self).__init__(auto_prefix=False) super(BackwardNet, self).__init__(auto_prefix=False)
self.forward_net = net self.forward_net = net
self.grad = C.GradOperation() self.grad = C.GradOperation(get_all=True)
def construct(self, *inputs): def construct(self, *inputs):
grads = self.grad(self.forward_net)(*inputs) grads = self.grad(self.forward_net)(*inputs)
@ -55,8 +55,13 @@ def test_forward():
x = Tensor(np.array(1), mstype.int32) x = Tensor(np.array(1), mstype.int32)
y = Tensor(np.array(3), mstype.int32) y = Tensor(np.array(3), mstype.int32)
forward_net = ForwardNet(max_cycles=10) forward_net = ForwardNet(max_cycles=10)
out = forward_net(x, y) # Graph Mode
print("forward out:", out) context.set_context(mode=context.GRAPH_MODE)
graph_mode_out = forward_net(x, y)
# Pynative Mode
context.set_context(mode=context.PYNATIVE_MODE)
pynative_mode_out = forward_net(x, y)
assert graph_mode_out == pynative_mode_out
def test_backward(): def test_backward():
@ -64,5 +69,10 @@ def test_backward():
y = Tensor(np.array(3), mstype.int32) y = Tensor(np.array(3), mstype.int32)
forward_net = ForwardNet(max_cycles=10) forward_net = ForwardNet(max_cycles=10)
backward_net = BackwardNet(forward_net) backward_net = BackwardNet(forward_net)
grads = backward_net(x, y) # Graph Mode
print("grads:", grads) context.set_context(mode=context.GRAPH_MODE)
graph_mode_grads = backward_net(x, y)
# Pynative Mode
context.set_context(mode=context.PYNATIVE_MODE)
pynative_mode_grads = backward_net(x, y)
assert graph_mode_grads == pynative_mode_grads

View File

@ -45,7 +45,7 @@ class BackwardNet(nn.Cell):
def __init__(self, net): def __init__(self, net):
super(BackwardNet, self).__init__(auto_prefix=False) super(BackwardNet, self).__init__(auto_prefix=False)
self.forward_net = net self.forward_net = net
self.grad = C.GradOperation() self.grad = C.GradOperation(get_all=True)
def construct(self, *inputs): def construct(self, *inputs):
grads = self.grad(self.forward_net)(*inputs) grads = self.grad(self.forward_net)(*inputs)
@ -56,8 +56,13 @@ def test_forward():
x = Tensor(np.array(1), mstype.int32) x = Tensor(np.array(1), mstype.int32)
y = Tensor(np.array(3), mstype.int32) y = Tensor(np.array(3), mstype.int32)
forward_net = ForwardNet(max_cycles=10) forward_net = ForwardNet(max_cycles=10)
out = forward_net(x, y) # Graph Mode
print("forward out:", out) context.set_context(mode=context.GRAPH_MODE)
graph_mode_out = forward_net(x, y)
# Pynative Mode
context.set_context(mode=context.PYNATIVE_MODE)
pynative_mode_out = forward_net(x, y)
assert graph_mode_out == pynative_mode_out
def test_backward(): def test_backward():
@ -65,5 +70,10 @@ def test_backward():
y = Tensor(np.array(3), mstype.int32) y = Tensor(np.array(3), mstype.int32)
forward_net = ForwardNet(max_cycles=10) forward_net = ForwardNet(max_cycles=10)
backward_net = BackwardNet(forward_net) backward_net = BackwardNet(forward_net)
grads = backward_net(x, y) # Graph Mode
print("grads:", grads) context.set_context(mode=context.GRAPH_MODE)
graph_mode_grads = backward_net(x, y)
# Pynative Mode
context.set_context(mode=context.PYNATIVE_MODE)
pynative_mode_grads = backward_net(x, y)
assert graph_mode_grads == pynative_mode_grads

View File

@ -46,7 +46,7 @@ class BackwardNet(nn.Cell):
def __init__(self, net): def __init__(self, net):
super(BackwardNet, self).__init__(auto_prefix=False) super(BackwardNet, self).__init__(auto_prefix=False)
self.forward_net = net self.forward_net = net
self.grad = C.GradOperation() self.grad = C.GradOperation(get_all=True)
def construct(self, *inputs): def construct(self, *inputs):
grads = self.grad(self.forward_net)(*inputs) grads = self.grad(self.forward_net)(*inputs)
@ -57,8 +57,13 @@ def test_forward():
x = Tensor(np.array(1), mstype.int32) x = Tensor(np.array(1), mstype.int32)
y = Tensor(np.array(3), mstype.int32) y = Tensor(np.array(3), mstype.int32)
forward_net = ForwardNet(max_cycles=3) forward_net = ForwardNet(max_cycles=3)
out = forward_net(x, y) # Graph Mode
print("forward out:", out) context.set_context(mode=context.GRAPH_MODE)
graph_mode_out = forward_net(x, y)
# Pynative Mode
context.set_context(mode=context.PYNATIVE_MODE)
pynative_mode_out = forward_net(x, y)
assert graph_mode_out == pynative_mode_out
def test_backward(): def test_backward():
@ -66,5 +71,10 @@ def test_backward():
y = Tensor(np.array(3), mstype.int32) y = Tensor(np.array(3), mstype.int32)
forward_net = ForwardNet(max_cycles=3) forward_net = ForwardNet(max_cycles=3)
backward_net = BackwardNet(forward_net) backward_net = BackwardNet(forward_net)
grads = backward_net(x, y) # Graph Mode
print("grads:", grads) context.set_context(mode=context.GRAPH_MODE)
graph_mode_grads = backward_net(x, y)
# Pynative Mode
context.set_context(mode=context.PYNATIVE_MODE)
pynative_mode_grads = backward_net(x, y)
assert graph_mode_grads == pynative_mode_grads

View File

@ -47,7 +47,7 @@ class BackwardNet(nn.Cell):
def __init__(self, net): def __init__(self, net):
super(BackwardNet, self).__init__(auto_prefix=False) super(BackwardNet, self).__init__(auto_prefix=False)
self.forward_net = net self.forward_net = net
self.grad = C.GradOperation() self.grad = C.GradOperation(get_all=True)
def construct(self, *inputs): def construct(self, *inputs):
grads = self.grad(self.forward_net)(*inputs) grads = self.grad(self.forward_net)(*inputs)
@ -58,8 +58,13 @@ def test_forward():
x = Tensor(np.array(1), mstype.int32) x = Tensor(np.array(1), mstype.int32)
y = Tensor(np.array(3), mstype.int32) y = Tensor(np.array(3), mstype.int32)
forward_net = ForwardNet(max_cycles=3) forward_net = ForwardNet(max_cycles=3)
out = forward_net(x, y) # Graph Mode
print("forward out:", out) context.set_context(mode=context.GRAPH_MODE)
graph_mode_out = forward_net(x, y)
# Pynative Mode
context.set_context(mode=context.PYNATIVE_MODE)
pynative_mode_out = forward_net(x, y)
assert graph_mode_out == pynative_mode_out
def test_backward(): def test_backward():
@ -67,5 +72,10 @@ def test_backward():
y = Tensor(np.array(3), mstype.int32) y = Tensor(np.array(3), mstype.int32)
forward_net = ForwardNet(max_cycles=3) forward_net = ForwardNet(max_cycles=3)
backward_net = BackwardNet(forward_net) backward_net = BackwardNet(forward_net)
grads = backward_net(x, y) # Graph Mode
print("grads:", grads) context.set_context(mode=context.GRAPH_MODE)
graph_mode_grads = backward_net(x, y)
# Pynative Mode
context.set_context(mode=context.PYNATIVE_MODE)
pynative_mode_grads = backward_net(x, y)
assert graph_mode_grads == pynative_mode_grads

View File

@ -31,10 +31,10 @@ class ForwardNet(nn.Cell):
def construct(self, x, y): def construct(self, x, y):
out = self.zero out = self.zero
while x < y: for _ in range(0, self.max_cycles):
for _ in range(0, self.max_cycles): while x < y:
out = x * y + out out = x * y + out
x = x + 1 x = x + 1
if out > 20: if out > 20:
out = out - 20 out = out - 20
return out return out
@ -44,7 +44,7 @@ class BackwardNet(nn.Cell):
def __init__(self, net): def __init__(self, net):
super(BackwardNet, self).__init__(auto_prefix=False) super(BackwardNet, self).__init__(auto_prefix=False)
self.forward_net = net self.forward_net = net
self.grad = C.GradOperation() self.grad = C.GradOperation(get_all=True)
def construct(self, *inputs): def construct(self, *inputs):
grads = self.grad(self.forward_net)(*inputs) grads = self.grad(self.forward_net)(*inputs)
@ -55,8 +55,13 @@ def test_forward():
x = Tensor(np.array(1), mstype.int32) x = Tensor(np.array(1), mstype.int32)
y = Tensor(np.array(3), mstype.int32) y = Tensor(np.array(3), mstype.int32)
forward_net = ForwardNet(max_cycles=3) forward_net = ForwardNet(max_cycles=3)
out = forward_net(x, y) # Graph Mode
print("forward out:", out) context.set_context(mode=context.GRAPH_MODE)
graph_mode_out = forward_net(x, y)
# Pynative Mode
context.set_context(mode=context.PYNATIVE_MODE)
pynative_mode_out = forward_net(x, y)
assert graph_mode_out == pynative_mode_out
def test_backward(): def test_backward():
@ -64,5 +69,10 @@ def test_backward():
y = Tensor(np.array(3), mstype.int32) y = Tensor(np.array(3), mstype.int32)
forward_net = ForwardNet(max_cycles=3) forward_net = ForwardNet(max_cycles=3)
backward_net = BackwardNet(forward_net) backward_net = BackwardNet(forward_net)
grads = backward_net(x, y) # Graph Mode
print("grads:", grads) context.set_context(mode=context.GRAPH_MODE)
graph_mode_grads = backward_net(x, y)
# Pynative Mode
context.set_context(mode=context.PYNATIVE_MODE)
pynative_mode_grads = backward_net(x, y)
assert graph_mode_grads == pynative_mode_grads

View File

@ -44,7 +44,7 @@ class BackwardNet(nn.Cell):
def __init__(self, net): def __init__(self, net):
super(BackwardNet, self).__init__(auto_prefix=False) super(BackwardNet, self).__init__(auto_prefix=False)
self.forward_net = net self.forward_net = net
self.grad = C.GradOperation() self.grad = C.GradOperation(get_all=True)
def construct(self, *inputs): def construct(self, *inputs):
grads = self.grad(self.forward_net)(*inputs) grads = self.grad(self.forward_net)(*inputs)
@ -55,8 +55,13 @@ def test_forward():
x = Tensor(np.array(1), mstype.int32) x = Tensor(np.array(1), mstype.int32)
y = Tensor(np.array(3), mstype.int32) y = Tensor(np.array(3), mstype.int32)
forward_net = ForwardNet(max_cycles=10) forward_net = ForwardNet(max_cycles=10)
out = forward_net(x, y) # Graph Mode
print("forward out:", out) context.set_context(mode=context.GRAPH_MODE)
graph_mode_out = forward_net(x, y)
# Pynative Mode
context.set_context(mode=context.PYNATIVE_MODE)
pynative_mode_out = forward_net(x, y)
assert graph_mode_out == pynative_mode_out
def test_backward(): def test_backward():
@ -64,5 +69,10 @@ def test_backward():
y = Tensor(np.array(3), mstype.int32) y = Tensor(np.array(3), mstype.int32)
forward_net = ForwardNet(max_cycles=10) forward_net = ForwardNet(max_cycles=10)
backward_net = BackwardNet(forward_net) backward_net = BackwardNet(forward_net)
grads = backward_net(x, y) # Graph Mode
print("grads:", grads) context.set_context(mode=context.GRAPH_MODE)
graph_mode_grads = backward_net(x, y)
# Pynative Mode
context.set_context(mode=context.PYNATIVE_MODE)
pynative_mode_grads = backward_net(x, y)
assert graph_mode_grads == pynative_mode_grads

View File

@ -45,7 +45,7 @@ class BackwardNet(nn.Cell):
def __init__(self, net): def __init__(self, net):
super(BackwardNet, self).__init__(auto_prefix=False) super(BackwardNet, self).__init__(auto_prefix=False)
self.forward_net = net self.forward_net = net
self.grad = C.GradOperation() self.grad = C.GradOperation(get_all=True)
def construct(self, *inputs): def construct(self, *inputs):
grads = self.grad(self.forward_net)(*inputs) grads = self.grad(self.forward_net)(*inputs)
@ -56,8 +56,13 @@ def test_forward():
x = Tensor(np.array(1), mstype.int32) x = Tensor(np.array(1), mstype.int32)
y = Tensor(np.array(3), mstype.int32) y = Tensor(np.array(3), mstype.int32)
forward_net = ForwardNet(max_cycles=10) forward_net = ForwardNet(max_cycles=10)
out = forward_net(x, y) # Graph Mode
print("forward out:", out) context.set_context(mode=context.GRAPH_MODE)
graph_mode_out = forward_net(x, y)
# Pynative Mode
context.set_context(mode=context.PYNATIVE_MODE)
pynative_mode_out = forward_net(x, y)
assert graph_mode_out == pynative_mode_out
def test_backward(): def test_backward():
@ -65,5 +70,10 @@ def test_backward():
y = Tensor(np.array(3), mstype.int32) y = Tensor(np.array(3), mstype.int32)
forward_net = ForwardNet(max_cycles=10) forward_net = ForwardNet(max_cycles=10)
backward_net = BackwardNet(forward_net) backward_net = BackwardNet(forward_net)
grads = backward_net(x, y) # Graph Mode
print("grads:", grads) context.set_context(mode=context.GRAPH_MODE)
graph_mode_grads = backward_net(x, y)
# Pynative Mode
context.set_context(mode=context.PYNATIVE_MODE)
pynative_mode_grads = backward_net(x, y)
assert graph_mode_grads == pynative_mode_grads

View File

@ -45,7 +45,7 @@ class BackwardNet(nn.Cell):
def __init__(self, net): def __init__(self, net):
super(BackwardNet, self).__init__(auto_prefix=False) super(BackwardNet, self).__init__(auto_prefix=False)
self.forward_net = net self.forward_net = net
self.grad = C.GradOperation() self.grad = C.GradOperation(get_all=True)
def construct(self, *inputs): def construct(self, *inputs):
grads = self.grad(self.forward_net)(*inputs) grads = self.grad(self.forward_net)(*inputs)
@ -56,8 +56,13 @@ def test_forward():
x = Tensor(np.array(1), mstype.int32) x = Tensor(np.array(1), mstype.int32)
y = Tensor(np.array(3), mstype.int32) y = Tensor(np.array(3), mstype.int32)
forward_net = ForwardNet(max_cycles=10) forward_net = ForwardNet(max_cycles=10)
out = forward_net(x, y) # Graph Mode
print("forward out:", out) context.set_context(mode=context.GRAPH_MODE)
graph_mode_out = forward_net(x, y)
# Pynative Mode
context.set_context(mode=context.PYNATIVE_MODE)
pynative_mode_out = forward_net(x, y)
assert graph_mode_out == pynative_mode_out
def test_backward(): def test_backward():
@ -65,5 +70,10 @@ def test_backward():
y = Tensor(np.array(3), mstype.int32) y = Tensor(np.array(3), mstype.int32)
forward_net = ForwardNet(max_cycles=10) forward_net = ForwardNet(max_cycles=10)
backward_net = BackwardNet(forward_net) backward_net = BackwardNet(forward_net)
grads = backward_net(x, y) # Graph Mode
print("grads:", grads) context.set_context(mode=context.GRAPH_MODE)
graph_mode_grads = backward_net(x, y)
# Pynative Mode
context.set_context(mode=context.PYNATIVE_MODE)
pynative_mode_grads = backward_net(x, y)
assert graph_mode_grads == pynative_mode_grads

View File

@ -37,6 +37,7 @@ class ForwardNet(nn.Cell):
out = x * y + out out = x * y + out
while i < self.max_cycles: while i < self.max_cycles:
out = out + 10 out = out + 10
i = i + 1
return out return out
@ -44,7 +45,7 @@ class BackwardNet(nn.Cell):
def __init__(self, net): def __init__(self, net):
super(BackwardNet, self).__init__(auto_prefix=False) super(BackwardNet, self).__init__(auto_prefix=False)
self.forward_net = net self.forward_net = net
self.grad = C.GradOperation() self.grad = C.GradOperation(get_all=True)
def construct(self, *inputs): def construct(self, *inputs):
grads = self.grad(self.forward_net)(*inputs) grads = self.grad(self.forward_net)(*inputs)
@ -52,17 +53,28 @@ class BackwardNet(nn.Cell):
def test_forward(): def test_forward():
x = Tensor(np.array(1), mstype.int32) x = Tensor(np.array(3), mstype.int32)
y = Tensor(np.array(3), mstype.int32) y = Tensor(np.array(5), mstype.int32)
forward_net = ForwardNet(max_cycles=10) forward_net = ForwardNet(max_cycles=3)
out = forward_net(x, y) # Graph Mode
print("forward out:", out) context.set_context(mode=context.GRAPH_MODE)
graph_mode_out = forward_net(x, y)
# Pynative Mode
context.set_context(mode=context.PYNATIVE_MODE)
pynative_mode_out = forward_net(x, y)
assert graph_mode_out == pynative_mode_out
def test_backward(): def test_backward():
x = Tensor(np.array(1), mstype.int32) x = Tensor(np.array(3), mstype.int32)
y = Tensor(np.array(3), mstype.int32) y = Tensor(np.array(5), mstype.int32)
forward_net = ForwardNet(max_cycles=10) forward_net = ForwardNet(max_cycles=3)
backward_net = BackwardNet(forward_net) backward_net = BackwardNet(forward_net)
grads = backward_net(x, y) # Graph Mode
print("grads:", grads) context.set_context(mode=context.GRAPH_MODE)
graph_mode_grads = backward_net(x, y)
# Pynative Mode
context.set_context(mode=context.PYNATIVE_MODE)
pynative_mode_grads = backward_net(x, y)
assert graph_mode_grads == pynative_mode_grads

View File

@ -46,7 +46,7 @@ class BackwardNet(nn.Cell):
def __init__(self, net): def __init__(self, net):
super(BackwardNet, self).__init__(auto_prefix=False) super(BackwardNet, self).__init__(auto_prefix=False)
self.forward_net = net self.forward_net = net
self.grad = C.GradOperation() self.grad = C.GradOperation(get_all=True)
def construct(self, *inputs): def construct(self, *inputs):
grads = self.grad(self.forward_net)(*inputs) grads = self.grad(self.forward_net)(*inputs)
@ -57,8 +57,13 @@ def test_forward():
x = Tensor(np.array(1), mstype.int32) x = Tensor(np.array(1), mstype.int32)
y = Tensor(np.array(3), mstype.int32) y = Tensor(np.array(3), mstype.int32)
forward_net = ForwardNet(max_cycles=3) forward_net = ForwardNet(max_cycles=3)
out = forward_net(x, y) # Graph Mode
print("forward out:", out) context.set_context(mode=context.GRAPH_MODE)
graph_mode_out = forward_net(x, y)
# Pynative Mode
context.set_context(mode=context.PYNATIVE_MODE)
pynative_mode_out = forward_net(x, y)
assert graph_mode_out == pynative_mode_out
def test_backward(): def test_backward():
@ -66,5 +71,10 @@ def test_backward():
y = Tensor(np.array(3), mstype.int32) y = Tensor(np.array(3), mstype.int32)
forward_net = ForwardNet(max_cycles=3) forward_net = ForwardNet(max_cycles=3)
backward_net = BackwardNet(forward_net) backward_net = BackwardNet(forward_net)
grads = backward_net(x, y) # Graph Mode
print("grads:", grads) context.set_context(mode=context.GRAPH_MODE)
graph_mode_grads = backward_net(x, y)
# Pynative Mode
context.set_context(mode=context.PYNATIVE_MODE)
pynative_mode_grads = backward_net(x, y)
assert graph_mode_grads == pynative_mode_grads

View File

@ -43,7 +43,7 @@ class BackwardNet(nn.Cell):
def __init__(self, net): def __init__(self, net):
super(BackwardNet, self).__init__(auto_prefix=False) super(BackwardNet, self).__init__(auto_prefix=False)
self.forward_net = net self.forward_net = net
self.grad = C.GradOperation() self.grad = C.GradOperation(get_all=True)
def construct(self, *inputs): def construct(self, *inputs):
grads = self.grad(self.forward_net)(*inputs) grads = self.grad(self.forward_net)(*inputs)
@ -54,8 +54,13 @@ def test_forward():
x = Tensor(np.array(1), mstype.int32) x = Tensor(np.array(1), mstype.int32)
y = Tensor(np.array(3), mstype.int32) y = Tensor(np.array(3), mstype.int32)
forward_net = ForwardNet(max_cycles=3) forward_net = ForwardNet(max_cycles=3)
out = forward_net(x, y) # Graph Mode
print("forward out:", out) context.set_context(mode=context.GRAPH_MODE)
graph_mode_out = forward_net(x, y)
# Pynative Mode
context.set_context(mode=context.PYNATIVE_MODE)
pynative_mode_out = forward_net(x, y)
assert graph_mode_out == pynative_mode_out
def test_backward(): def test_backward():
@ -63,5 +68,10 @@ def test_backward():
y = Tensor(np.array(3), mstype.int32) y = Tensor(np.array(3), mstype.int32)
forward_net = ForwardNet(max_cycles=3) forward_net = ForwardNet(max_cycles=3)
backward_net = BackwardNet(forward_net) backward_net = BackwardNet(forward_net)
grads = backward_net(x, y) # Graph Mode
print("grads:", grads) context.set_context(mode=context.GRAPH_MODE)
graph_mode_grads = backward_net(x, y)
# Pynative Mode
context.set_context(mode=context.PYNATIVE_MODE)
pynative_mode_grads = backward_net(x, y)
assert graph_mode_grads == pynative_mode_grads