mindspore/tests/syntax/simple_expression/test_parse_exception.py

374 lines
7.5 KiB
Python
Raw Normal View History

2021-08-04 09:17:30 +08:00
import numpy as np
import mindspore.nn as nn
from mindspore import context
from mindspore.common.parameter import Parameter
from mindspore.common.tensor import Tensor
import mindspore.ops as ops
import mindspore
2021-07-22 15:48:12 +08:00
context.set_context(mode=context.GRAPH_MODE)
2021-08-04 09:17:30 +08:00
class TestNoReturn(nn.Cell):
def __init__(self):
super(TestNoReturn, self).__init__()
self.m = 1
def construct(self, x, y):
and_v = x * y
and_v += 1
# return and_v
def test_no_return():
net = TestNoReturn()
x = Tensor(np.ones([2, 2], np.float))
y = Tensor(np.zeros([2, 2], np.float))
ret = net(x, y)
print(ret)
class TestSuper(nn.Cell):
def __init__(self):
super().__init__()
self.m = 1
def construct(self, x, y):
super(TestSuper, 2, 3).aa()
and_v = x * y
return and_v
def test_super():
net = TestSuper()
x = Tensor(np.ones([2, 2], np.float))
y = Tensor(np.zeros([2, 2], np.float))
ret = net(x, y)
print(ret)
class TestCompare(nn.Cell):
def __init__(self):
super(TestCompare, self).__init__()
self.m = 1
def construct(self, x, y):
return x > y > 10
def test_compare():
net = TestCompare()
x = Tensor(np.ones([2, 2], np.float))
y = Tensor(np.zeros([2, 2], np.float))
ret = net(x, y)
print(ret)
class TestUndefMemberChange(nn.Cell):
def __init__(self):
super(TestUndefMemberChange, self).__init__()
self.m = 1
def construct(self, x, y):
self.t = x
return x > y
def test_undef_member_changer():
net = TestUndefMemberChange()
x = Tensor(np.ones([2, 2], np.float))
y = Tensor(np.zeros([2, 2], np.float))
ret = net(x, y)
print(ret)
class TestMemberChange(nn.Cell):
def __init__(self):
super(TestMemberChange, self).__init__()
self.t = Tensor(np.zeros([2, 2], np.float))
def construct(self, x, y):
self.t = x
return x > y
def test_member_changer():
net = TestMemberChange()
x = Tensor(np.ones([2, 2], np.float))
y = Tensor(np.zeros([2, 2], np.float))
ret = net(x, y)
print(ret)
class TestUnsupportSTMT(nn.Cell):
def __init__(self):
super(TestUnsupportSTMT, self).__init__()
self.m = 1
def construct(self, x, y):
try:
val = x + y
finally:
val = x
return val
def test_UnsupportSTMT():
net = TestUnsupportSTMT()
x = Tensor(np.ones([2, 2], np.float))
y = Tensor(np.zeros([2, 2], np.float))
ret = net(x, y)
print(ret)
class TestUnsupportNum(nn.Cell):
def __init__(self):
super(TestUnsupportNum, self).__init__()
self.m = 1
def construct(self, x, y):
a = x + 3.14j
return a
def test_UnsupportNum():
net = TestUnsupportNum()
x = Tensor(np.ones([2, 2], np.float))
y = Tensor(np.zeros([2, 2], np.float))
ret = net(x, y)
print(ret)
class TestAssignAdd(nn.Cell):
def __init__(self):
super(TestAssignAdd, self).__init__()
self.m = 1
def construct(self, x, y):
x.id_ += y
# x[1] += y
return x
def test_AssignAdd():
net = TestAssignAdd()
ret = net([3, 1], 2)
print(ret)
class TestParseListComp(nn.Cell):
def __init__(self):
super(TestParseListComp, self).__init__()
self.m = 1
def construct(self, x, y):
ret = [m + y for l in x for m in l]
return ret
def test_ParseListComp():
net = TestParseListComp()
ret = net([[1, 2], [3, 4]], 2)
print(ret)
class TestAssign(nn.Cell):
def __init__(self):
super(TestAssign, self).__init__()
self.m = 1
def construct(self, x, y):
x.id_ = y
return x
def test_Assign():
net = TestAssign()
ret = net([3, 1], 2)
print(ret)
class TestAssignList(nn.Cell):
def __init__(self):
super(TestAssignList, self).__init__()
self.m = 1
def construct(self, x, y):
[m, n] = [x, y]
return m, n
def test_AssignList():
net = TestAssignList()
ret = net([3, 1], 2)
print(ret)
class TestParaDef(nn.Cell):
def __init__(self):
super(TestParaDef, self).__init__()
self.m = 1
def construct(self, x=1, y=1):
ret = x + y
return ret
def test_para_def():
net = TestParaDef()
ret = net(1, 2)
print(ret)
class TestParameterNameNone(nn.Cell):
def __init__(self):
super(TestParameterNameNone, self).__init__()
self.matmul = ops.MatMul()
# self.weight = Parameter(Tensor(np.ones((1, 2)), mindspore.float32), name="w", requires_grad=True)
self.weight = Parameter(Tensor(np.ones((1, 2)), mindspore.float32), name=None, requires_grad=True)
def construct(self, x):
out = self.matmul(self.weight, x)
return out
def test_parameter_name_none():
net = TestParameterNameNone()
x = Tensor(np.ones((2, 1)), mindspore.float32)
print(net(x))
class TestBranchReturn(nn.Cell):
def __init__(self):
super(TestBranchReturn, self).__init__()
self.m = 1
def construct(self, x):
if x > 0:
return x + 1
return x
def test_branch_return():
net = TestBranchReturn()
print(net(1))
class TestSliceNotInt(nn.Cell):
def __init__(self):
super(TestSliceNotInt, self).__init__()
self.m = 1
def construct(self, x):
s = "ABCDEFGHIJKL"
sl = slice(x, 4.5)
return s[sl]
def test_slice_not_int():
net = TestSliceNotInt()
print(net(1))
class TestSliceNotIntDefInInit(nn.Cell):
def __init__(self):
super(TestSliceNotIntDefInInit, self).__init__()
self.sl = slice(1, 4.5)
def construct(self, x):
s = "ABCDEFGHIJKL"
return s[self.sl]
def test_slice_not_int_def_in_init():
net = TestSliceNotIntDefInInit()
print(net(1))
class MatMulCell(nn.Cell):
def __init__(self):
super().__init__()
self.m = 1
def construct(self, x):
return x
class TestCellPipelineStage(nn.Cell):
def __init__(self, strategy1, strategy2, param=None):
super().__init__()
self.block = nn.CellList()
cell = MatMulCell()
cell.pipeline_stage = -1
self.block.append(cell)
cell = MatMulCell()
cell.pipeline_stage = -1
self.block.append(cell)
def construct(self, x):
for i in range(2):
x = self.block[i](x)
return x
def test_cell_pipeline_state():
strategy1 = Tensor((4, 1), mindspore.int64)
strategy2 = Tensor((2, 1), mindspore.int64)
net = TestCellPipelineStage(strategy1, strategy2)
print(net(1))
class TestArgsKwArgs(nn.Cell):
def __init__(self):
super(TestArgsKwArgs, self).__init__()
self.m = 1
def construct(self, *args, **kwargs):
x = 0
for v in args:
x += v
# for k, v in kwargs.items():
# x += v
return x
def test_args_kwargs():
net = TestArgsKwArgs()
print(net(1, 2, 3, 4, k1=5, k2=6))
class TestArgs(nn.Cell):
def __init__(self):
super(TestArgs, self).__init__()
self.m = 1
def construct(self, x, *args):
for v in args:
x += v
return x
def test_args():
net = TestArgs()
print(net(1, 2, 3, 4))
class TestNoDef(nn.Cell):
def __init__(self):
super().__init__()
self.m = 1
def construct(self, x):
x += self.y
return x
def test_no_def():
net = TestNoDef()
print(net(1))