mindspore/tests/syntax/simple_expression/test_parse_exception.py

374 lines
7.5 KiB
Python

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
context.set_context(mode=context.GRAPH_MODE)
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))