paddle.fluid. data ( name, shape, dtype='float32', lod_level=0 ) [source]

Data Layer

This function creates a variable on the global block. The global variable can be accessed by all the following operators in the graph. The variable is a placeholder that could be fed with input, such as Executor can feed input into the variable.

Note is deprecated. It will be removed in a future version. Please use this

The set shape and dtype at compile time but does NOT check the shape or the dtype of fed data, this checks the shape and the dtype of data fed by Executor or ParallelExecutor during run time.

To feed variable size inputs, users can set None or -1 on the variable dimension when using, or feed variable size inputs directly to and PaddlePaddle will fit the size accordingly.

The default stop_gradient attribute of the Variable created by this API is true, which means the gradient won’t be passed backward through the data Variable. Set var.stop_gradient = False If user would like to pass backward gradient.

  • name (str) – The name/alias of the variable, see Name for more details.

  • shape (list|tuple) – List|Tuple of integers declaring the shape. You can set “None” or -1 at a dimension to indicate the dimension can be of any size. For example, it is useful to set changeable batch size as “None” or -1.

  • dtype (np.dtype|VarType|str, optional) – The type of the data. Supported dtype: bool, float16, float32, float64, int8, int16, int32, int64, uint8. Default: float32.

  • lod_level (int, optional) – The LoD level of the LoDTensor. Usually users don’t have to set this value. For more details about when and how to use LoD level, see user_guide_lod_tensor . Default: 0.


The global variable that gives access to the data.

Return type



import paddle
import paddle.fluid as fluid
import numpy as np

# Creates a variable with fixed size [3, 2, 1]
# User can only feed data of the same shape to x
x ='x', shape=[3, 2, 1], dtype='float32')

# Creates a variable with changeable batch size -1.
# Users can feed data of any batch size into y,
# but size of each data sample has to be [2, 1]
y ='y', shape=[-1, 2, 1], dtype='float32')

z = x + y

# In this example, we will feed x and y with np-ndarray "1"
# and fetch z, like implementing "1 + 1 = 2" in PaddlePaddle
feed_data = np.ones(shape=[3, 2, 1], dtype=np.float32)

exe = fluid.Executor(fluid.CPUPlace())
out =,
                  'x': feed_data,
                  'y': feed_data

# np-ndarray of shape=[3, 2, 1], dtype=float32, whose elements are 2