diff --git a/paddle/fluid/pybind/imperative.cc b/paddle/fluid/pybind/imperative.cc index 7c36efcaf38bbb8905c0a2281fec392d3451292f..d7959c699784e5b6fe911db9d7b9548096714120 100644 --- a/paddle/fluid/pybind/imperative.cc +++ b/paddle/fluid/pybind/imperative.cc @@ -69,9 +69,12 @@ static const platform::Place PyObjectToPlace(const py::object &place_obj) { return place_obj.cast(); } else if (py::isinstance(place_obj)) { return place_obj.cast(); + } else if (py::isinstance(place_obj)) { + return place_obj.cast(); } else { PADDLE_THROW(platform::errors::InvalidArgument( - "Place should be one of CPUPlace/XPUPlace/CUDAPlace/CUDAPinnedPlace")); + "Place should be one of " + "Place/CPUPlace/XPUPlace/CUDAPlace/CUDAPinnedPlace")); } } diff --git a/python/paddle/fluid/tests/unittests/test_var_base.py b/python/paddle/fluid/tests/unittests/test_var_base.py index 511813fc1cd0f5f20e735edd8b6514ae4a77b2a8..7d3e09a7ddd9d722dfc92c8419aeabc35f44fe5e 100644 --- a/python/paddle/fluid/tests/unittests/test_var_base.py +++ b/python/paddle/fluid/tests/unittests/test_var_base.py @@ -40,6 +40,9 @@ class TestVarBase(unittest.TestCase): self.assertTrue(np.array_equal(x.numpy(), [1])) self.assertNotEqual(x.dtype, core.VarDesc.VarType.FP32) + y = paddle.to_tensor(2, place=x.place) + self.assertEqual(str(x.place), str(y.place)) + # set_default_dtype should not take effect on numpy x = paddle.to_tensor( np.array([1.2]).astype('float16'), diff --git a/python/paddle/tensor/creation.py b/python/paddle/tensor/creation.py index 622ae3c584ef04fdfadaa352344b528afe00d92f..b46e1c79461a2b23519cfa462c7e4435b2e45158 100644 --- a/python/paddle/tensor/creation.py +++ b/python/paddle/tensor/creation.py @@ -126,10 +126,10 @@ def to_tensor(data, dtype=None, place=None, stop_gradient=True): if place is None: place = _current_expected_place() - elif not isinstance(place, - (core.CPUPlace, core.CUDAPinnedPlace, core.CUDAPlace)): + elif not isinstance(place, (core.Place, core.CPUPlace, core.CUDAPinnedPlace, + core.CUDAPlace)): raise ValueError( - "'place' must be any of paddle.Place, paddle.CUDAPinnedPlace, paddle.CUDAPlace" + "'place' must be any of paddle.Place, paddle.CPUPlace, paddle.CUDAPinnedPlace, paddle.CUDAPlace" ) #Todo(zhouwei): Support allocate tensor on any other specified card