未验证 提交 c09fc385 编写于 作者: Z zqw_1997 提交者: GitHub

[Zero-Dim] Support output 0D for static.data (#52775)

* test=allcase

* test=allcase

* test=allcase

* test=allcase

* test=allcase

* test=allcase

* test=allcase

* test=allcase

* test=allcase

* test=allcase

* test=allcase

* test=allcase

* test=allcase

* test=allcase

* test=allcase

* test=allcase
上级 05c71543
...@@ -580,7 +580,7 @@ def _as_lodtensor(data, place, dtype=None): ...@@ -580,7 +580,7 @@ def _as_lodtensor(data, place, dtype=None):
else dtype else dtype
) )
if np.isscalar(data): if np.isscalar(data):
data = np.array([data]).astype(dtype) data = np.array(data).astype(dtype)
elif isinstance(data, (list, tuple)): elif isinstance(data, (list, tuple)):
data = np.array(data) data = np.array(data)
if data.dtype == np.object_: if data.dtype == np.object_:
......
...@@ -96,7 +96,7 @@ def create_paddle_case(op_type, callback): ...@@ -96,7 +96,7 @@ def create_paddle_case(op_type, callback):
paddle.enable_static() paddle.enable_static()
with program_guard(Program(), Program()): with program_guard(Program(), Program()):
x = paddle.static.data(name='x', shape=[4], dtype='int64') x = paddle.static.data(name='x', shape=[4], dtype='int64')
y = paddle.static.data(name='y', shape=[1], dtype='int64') y = paddle.static.data(name='y', shape=[], dtype='int64')
op = eval("paddle.%s" % (self.op_type)) op = eval("paddle.%s" % (self.op_type))
out = op(x, y) out = op(x, y)
exe = fluid.Executor(self.place) exe = fluid.Executor(self.place)
......
...@@ -31,6 +31,13 @@ class TestApiStaticDataError(unittest.TestCase): ...@@ -31,6 +31,13 @@ class TestApiStaticDataError(unittest.TestCase):
x3 = paddle.static.data(name="x3", shape=[2, 25]) x3 = paddle.static.data(name="x3", shape=[2, 25])
self.assertEqual(x3.dtype, core.VarDesc.VarType.FP64) self.assertEqual(x3.dtype, core.VarDesc.VarType.FP64)
def test_0D(self):
with program_guard(Program(), Program()):
x1 = paddle.static.data(name="x1_0D", shape=[])
self.assertEqual(x1.dtype, core.VarDesc.VarType.FP32)
x2 = paddle.static.data(name="x2_0D", shape=(), dtype="bool")
self.assertEqual(x2.dtype, core.VarDesc.VarType.BOOL)
def test_error(self): def test_error(self):
with program_guard(Program(), Program()): with program_guard(Program(), Program()):
......
...@@ -66,7 +66,7 @@ class TestDeg2radAPI(unittest.TestCase): ...@@ -66,7 +66,7 @@ class TestDeg2radAPI(unittest.TestCase):
class TestDeg2radAPI2(TestDeg2radAPI): class TestDeg2radAPI2(TestDeg2radAPI):
# Test input data type is int # Test input data type is int
def setUp(self): def setUp(self):
self.x_np = 180 self.x_np = [180]
self.x_shape = [1] self.x_shape = [1]
self.out_np = np.pi self.out_np = np.pi
self.x_dtype = 'int64' self.x_dtype = 'int64'
......
...@@ -22,7 +22,7 @@ from paddle import fluid ...@@ -22,7 +22,7 @@ from paddle import fluid
class TestExecutor(unittest.TestCase): class TestExecutor(unittest.TestCase):
def net(self): def net(self):
lr = paddle.static.data(name="lr", shape=[1], dtype='float32') lr = paddle.static.data(name="lr", shape=[], dtype='float32')
x = paddle.static.data(name="x", shape=[None, 1], dtype='float32') x = paddle.static.data(name="x", shape=[None, 1], dtype='float32')
y = paddle.static.data(name="y", shape=[None, 1], dtype='float32') y = paddle.static.data(name="y", shape=[None, 1], dtype='float32')
y_predict = paddle.static.nn.fc(x, size=1) y_predict = paddle.static.nn.fc(x, size=1)
......
...@@ -25,8 +25,8 @@ paddle.enable_static() ...@@ -25,8 +25,8 @@ paddle.enable_static()
class TestGcdAPI(unittest.TestCase): class TestGcdAPI(unittest.TestCase):
def setUp(self): def setUp(self):
self.x_np = 12 self.x_np = [12]
self.y_np = 20 self.y_np = [20]
self.x_shape = [1] self.x_shape = [1]
self.y_shape = [1] self.y_shape = [1]
...@@ -81,14 +81,14 @@ class TestGcdAPI3(TestGcdAPI): ...@@ -81,14 +81,14 @@ class TestGcdAPI3(TestGcdAPI):
def setUp(self): def setUp(self):
self.x_np = 0 self.x_np = 0
self.y_np = 20 self.y_np = 20
self.x_shape = [1] self.x_shape = []
self.y_shape = [1] self.y_shape = []
class TestGcdAPI4(TestGcdAPI): class TestGcdAPI4(TestGcdAPI):
def setUp(self): def setUp(self):
self.x_np = 0 self.x_np = [0]
self.y_np = 0 self.y_np = [0]
self.x_shape = [1] self.x_shape = [1]
self.y_shape = [1] self.y_shape = [1]
...@@ -97,5 +97,5 @@ class TestGcdAPI5(TestGcdAPI): ...@@ -97,5 +97,5 @@ class TestGcdAPI5(TestGcdAPI):
def setUp(self): def setUp(self):
self.x_np = 12 self.x_np = 12
self.y_np = -20 self.y_np = -20
self.x_shape = [1] self.x_shape = []
self.y_shape = [1] self.y_shape = []
...@@ -27,8 +27,8 @@ class TestLcmAPI(unittest.TestCase): ...@@ -27,8 +27,8 @@ class TestLcmAPI(unittest.TestCase):
def setUp(self): def setUp(self):
self.x_np = 12 self.x_np = 12
self.y_np = 20 self.y_np = 20
self.x_shape = [1] self.x_shape = []
self.y_shape = [1] self.y_shape = []
def test_static_graph(self): def test_static_graph(self):
startup_program = fluid.Program() startup_program = fluid.Program()
...@@ -81,14 +81,14 @@ class TestLcmAPI3(TestLcmAPI): ...@@ -81,14 +81,14 @@ class TestLcmAPI3(TestLcmAPI):
def setUp(self): def setUp(self):
self.x_np = 0 self.x_np = 0
self.y_np = 20 self.y_np = 20
self.x_shape = [1] self.x_shape = []
self.y_shape = [1] self.y_shape = []
class TestLcmAPI4(TestLcmAPI): class TestLcmAPI4(TestLcmAPI):
def setUp(self): def setUp(self):
self.x_np = 0 self.x_np = [0]
self.y_np = 0 self.y_np = [0]
self.x_shape = [1] self.x_shape = [1]
self.y_shape = [1] self.y_shape = [1]
...@@ -97,5 +97,5 @@ class TestLcmAPI5(TestLcmAPI): ...@@ -97,5 +97,5 @@ class TestLcmAPI5(TestLcmAPI):
def setUp(self): def setUp(self):
self.x_np = 12 self.x_np = 12
self.y_np = -20 self.y_np = -20
self.x_shape = [1] self.x_shape = []
self.y_shape = [1] self.y_shape = []
...@@ -141,7 +141,7 @@ class TestPutAlongAxisAPI(unittest.TestCase): ...@@ -141,7 +141,7 @@ class TestPutAlongAxisAPI(unittest.TestCase):
self.place = [paddle.CPUPlace()] self.place = [paddle.CPUPlace()]
self.axis = 0 self.axis = 0
self.value_np = 99.0 self.value_np = 99.0
self.value_shape = [1] self.value_shape = []
self.x_feed = copy.deepcopy(self.x_np) self.x_feed = copy.deepcopy(self.x_np)
if core.is_compiled_with_cuda(): if core.is_compiled_with_cuda():
self.place.append(paddle.CUDAPlace(0)) self.place.append(paddle.CUDAPlace(0))
...@@ -240,7 +240,7 @@ class TestPutAlongAxisAPICase2(TestPutAlongAxisAPI): ...@@ -240,7 +240,7 @@ class TestPutAlongAxisAPICase2(TestPutAlongAxisAPI):
self.place = [paddle.CPUPlace()] self.place = [paddle.CPUPlace()]
self.axis = 0 self.axis = 0
self.value_np = 99.0 self.value_np = 99.0
self.value_shape = [1] self.value_shape = []
self.x_feed = copy.deepcopy(self.x_np) self.x_feed = copy.deepcopy(self.x_np)
if core.is_compiled_with_cuda(): if core.is_compiled_with_cuda():
self.place.append(paddle.CUDAPlace(0)) self.place.append(paddle.CUDAPlace(0))
...@@ -258,7 +258,7 @@ class TestPutAlongAxisAPICase3(TestPutAlongAxisAPI): ...@@ -258,7 +258,7 @@ class TestPutAlongAxisAPICase3(TestPutAlongAxisAPI):
self.place = [paddle.CPUPlace()] self.place = [paddle.CPUPlace()]
self.axis = 0 self.axis = 0
self.value_np = 99.0 self.value_np = 99.0
self.value_shape = [1] self.value_shape = []
self.x_feed = copy.deepcopy(self.x_np) self.x_feed = copy.deepcopy(self.x_np)
if core.is_compiled_with_cuda(): if core.is_compiled_with_cuda():
self.place.append(paddle.CUDAPlace(0)) self.place.append(paddle.CUDAPlace(0))
......
...@@ -65,7 +65,7 @@ class TestRad2degAPI(unittest.TestCase): ...@@ -65,7 +65,7 @@ class TestRad2degAPI(unittest.TestCase):
class TestRad2degAPI2(TestRad2degAPI): class TestRad2degAPI2(TestRad2degAPI):
def setUp(self): def setUp(self):
self.x_np = np.pi / 2 self.x_np = [np.pi / 2]
self.x_shape = [1] self.x_shape = [1]
self.out_np = 90 self.out_np = 90
self.x_dtype = 'float32' self.x_dtype = 'float32'
...@@ -83,7 +83,7 @@ class TestRad2degAPI2(TestRad2degAPI): ...@@ -83,7 +83,7 @@ class TestRad2degAPI2(TestRad2degAPI):
class TestRad2degAPI3(TestRad2degAPI): class TestRad2degAPI3(TestRad2degAPI):
# Test input data type is int # Test input data type is int
def setUp(self): def setUp(self):
self.x_np = 1 self.x_np = [1]
self.x_shape = [1] self.x_shape = [1]
self.out_np = 180 / np.pi self.out_np = 180 / np.pi
self.x_dtype = 'int64' self.x_dtype = 'int64'
......
...@@ -83,7 +83,7 @@ class TestTrapezoidAPI(unittest.TestCase): ...@@ -83,7 +83,7 @@ class TestTrapezoidAPI(unittest.TestCase):
) )
if self.dx is not None: if self.dx is not None:
dx = paddle.static.data( dx = paddle.static.data(
name="dx", shape=[1], dtype='float32' name="dx", shape=[], dtype='float32'
) )
exe = paddle.static.Executor(place) exe = paddle.static.Executor(place)
......
...@@ -29,7 +29,7 @@ class TestUnbind(unittest.TestCase): ...@@ -29,7 +29,7 @@ class TestUnbind(unittest.TestCase):
x_1 = paddle.static.data(shape=[2, 3], dtype='float32', name='x_1') x_1 = paddle.static.data(shape=[2, 3], dtype='float32', name='x_1')
[out_0, out_1] = tensor.unbind(input=x_1, axis=0) [out_0, out_1] = tensor.unbind(input=x_1, axis=0)
input_1 = np.random.random([2, 3]).astype("float32") input_1 = np.random.random([2, 3]).astype("float32")
axis = paddle.static.data(shape=[1], dtype='int32', name='axis') axis = paddle.static.data(shape=[], dtype='int32', name='axis')
exe = fluid.Executor(place=fluid.CPUPlace()) exe = fluid.Executor(place=fluid.CPUPlace())
[res_1, res_2] = exe.run( [res_1, res_2] = exe.run(
...@@ -87,7 +87,7 @@ class TestLayersUnbind(unittest.TestCase): ...@@ -87,7 +87,7 @@ class TestLayersUnbind(unittest.TestCase):
x_1 = paddle.static.data(shape=[2, 3], dtype='float32', name='x_1') x_1 = paddle.static.data(shape=[2, 3], dtype='float32', name='x_1')
[out_0, out_1] = paddle.unbind(input=x_1, axis=0) [out_0, out_1] = paddle.unbind(input=x_1, axis=0)
input_1 = np.random.random([2, 3]).astype("float32") input_1 = np.random.random([2, 3]).astype("float32")
axis = paddle.static.data(shape=[1], dtype='int32', name='axis') axis = paddle.static.data(shape=[], dtype='int32', name='axis')
exe = fluid.Executor(place=fluid.CPUPlace()) exe = fluid.Executor(place=fluid.CPUPlace())
[res_1, res_2] = exe.run( [res_1, res_2] = exe.run(
......
...@@ -3528,6 +3528,39 @@ class TestSundryAPIStatic(unittest.TestCase): ...@@ -3528,6 +3528,39 @@ class TestSundryAPIStatic(unittest.TestCase):
res = self.exe.run(prog, feed={"x": x_tensor}, fetch_list=[out]) res = self.exe.run(prog, feed={"x": x_tensor}, fetch_list=[out])
self.assertEqual(res[0].shape, (3, 4, 2)) self.assertEqual(res[0].shape, (3, 4, 2))
@prog_scope()
def test_static_data(self):
x1 = paddle.static.data(name="x1", shape=[])
prog = paddle.static.default_main_program()
res = self.exe.run(
prog,
feed={
"x1": np.array(1.0, dtype='float32'),
},
fetch_list=[
x1.name,
],
)
self.assertEqual(res[0].shape, ())
self.assertEqual(res[0], np.array(1.0))
x2 = paddle.static.data(name="x2", shape=[])
x3 = paddle.static.data(name="x3", shape=[])
y = x2 + x3
prog = paddle.static.default_main_program()
res = self.exe.run(
prog,
feed={
"x2": 100.5,
"x3": 200.5,
},
fetch_list=[
y.name,
],
)
self.assertEqual(res[0].shape, ())
self.assertEqual(res[0], 301.0)
@prog_scope() @prog_scope()
def test_prelu(self): def test_prelu(self):
x1 = paddle.full([], 1.0, 'float32') x1 = paddle.full([], 1.0, 'float32')
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册