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