paddle. to_tensor ( data, dtype=None, place=None, stop_gradient=True ) [source]

Constructs a paddle.Tensor from data , which can be scalar, tuple, list, numpy.ndarray, paddle.Tensor.

If the data is already a tensor, and dtype or place does’t change, no copy will be performed and return origin tensor, otherwise a new tensor will be constructed and returned.

  • data (scalar|tuple|list|ndarray|Tensor) – Initial data for the tensor. Can be a scalar, list, tuple, numpy.ndarray, paddle.Tensor.

  • dtype (str|np.dtype, optional) – The desired data type of returned tensor. Can be ‘bool’ , ‘float16’ , ‘float32’ , ‘float64’ , ‘int8’ , ‘int16’ , ‘int32’ , ‘int64’ , ‘uint8’, ‘complex64’ , ‘complex128’. Default: None, infers dtype from data except for python float number which gets dtype from get_default_type .

  • place (CPUPlace|CUDAPinnedPlace|CUDAPlace|str, optional) – The place to allocate Tensor. Can be CPUPlace, CUDAPinnedPlace, CUDAPlace. Default: None, means global place. If place is string, It can be cpu, gpu:x and gpu_pinned, where x is the index of the GPUs.

  • stop_gradient (bool, optional) – Whether to block the gradient propagation of Autograd. Default: True.


A Tensor constructed from data .

Return type


  • TypeError – If the data type of data is not scalar, list, tuple, numpy.ndarray, paddle.Tensor

  • ValueError – If data is tuple|list, it can’t contain nested tuple|list with different lengths , such as: [[1, 2], [3, 4, 5]]

  • TypeError – If dtype is not bool, float16, float32, float64, int8, int16, int32, int64, uint8, complex64, complex128

  • ValueError – If place is not paddle.CPUPlace, paddle.CUDAPinnedPlace, paddle.CUDAPlace or specified pattern string.


import paddle

# <class 'paddle.Tensor'>

# Tensor(shape=[1], dtype=int64, place=CUDAPlace(0), stop_gradient=True,
#        [1])

x = paddle.to_tensor(1)
paddle.to_tensor(x, dtype='int32', place=paddle.CPUPlace()) # A new tensor will be constructed due to different dtype or place
# Tensor(shape=[1], dtype=int32, place=CPUPlace, stop_gradient=True,
#        [1])

paddle.to_tensor((1.1, 2.2), place=paddle.CUDAPinnedPlace())
# Tensor(shape=[1], dtype=float32, place=CUDAPinnedPlace, stop_gradient=True,
#        [1])

paddle.to_tensor([[0.1, 0.2], [0.3, 0.4]], place=paddle.CUDAPlace(0), stop_gradient=False)
# Tensor(shape=[2, 2], dtype=float32, place=CUDAPlace(0), stop_gradient=False,
#        [[0.10000000, 0.20000000],
#         [0.30000001, 0.40000001]])

type(paddle.to_tensor([[1+1j, 2], [3+2j, 4]], dtype='complex64'))
# <class 'paddle.VarBase'>

paddle.to_tensor([[1+1j, 2], [3+2j, 4]], dtype='complex64')
# Tensor(shape=[2, 2], dtype=complex64, place=CUDAPlace(0), stop_gradient=True,
#        [[(1+1j), (2+0j)],
#         [(3+2j), (4+0j)]])