提交 eb98b1fd 编写于 作者: A Aurelius84

add InputSpec doc

上级 22d89507
.. _cn_api_static_cn_data:
InputSpec
-------------------------------
.. py:class:: paddle.static.InputSpec(shape=None, dtype='float32', name=None)
用于描述模型输入的签名信息,包括shape、dtype和name。
参数:
- **shape** (list|tuple)- 声明维度信息的list或tuple,默认值为None。
- **dtype** (np.dtype|VarType|str,可选)- 数据类型,支持bool,float16,float32,float64,int8,int16,int32,int64,uint8。默认值为float32。
- **name** (str)- 被创建对象的名字,具体用法请参见 :ref:`api_guide_Name` 。
返回:初始化后的 ``InputSpec`` 对象
返回类型:InputSpec
**代码示例**
.. code-block:: python
from paddle.static import InputSpec
input = InputSpec([None, 784], 'float32', 'x')
label = InputSpec([None, 1], 'int64', 'label')
.. py:method:: from_tensor(tensor, name=None)
该接口将根据输入Tensor的shape、dtype等信息构建InputSpec对象。
参数:
- **tensor** (Tensor) - 用于构建InputSpec的源Tensor
- **name** (str): 被创建对象的名字,具体用法请参见 :ref:`api_guide_Name` 。 默认为:None。
返回:根据Tensor信息构造的 ``InputSpec`` 对象
返回类型:InputSpec
**代码示例**
.. code-block:: python
import numpy as np
import paddle.fluid as fluid
from paddle.static import InputSpec
fluid.enable_dygraph()
x = fluid.dygraph.to_variable(np.ones([2, 2], np.float32))
x_spec = InputSpec.from_tensor(x, name='x')
print(x_spec) # InputSpec(shape=(2, 2), dtype=VarType.FP32, name=x)
.. py:method:: from_numpy(ndarray, name=None)
该接口将根据输入numpy ndarray的shape、dtype等信息构建InputSpec对象。
参数:
- **ndarray** (Tensor) - 用于构建InputSpec的numpy ndarray
- **name** (str): 被创建对象的名字,具体用法请参见 :ref:`api_guide_Name` 。 默认为:None。
返回:根据ndarray信息构造的 ``InputSpec`` 对象
返回类型:InputSpec
**代码示例**
.. code-block:: python
import numpy as np
from paddle.static import InputSpec
x = np.ones([2, 2], np.float32)
x_spec = InputSpec.from_numpy(x, name='x')
print(x_spec) # InputSpec(shape=(2, 2), dtype=VarType.FP32, name=x)
.. py:method:: batch(batch_size)
该接口将batch_size插入到当前InputSpec对象的shape元组最前面。
参数:
- **batch_size** (int) - 被插入的batch size整型数值
返回: 更新shape信息后的``InputSpec`` 对象
返回类型:InputSpec
**代码示例**
.. code-block:: python
from paddle.static import InputSpec
x_spec = InputSpec(shape=[64], dtype='float32', name='x')
x_spec.batch(4)
print(x_spec) # InputSpec(shape=(4, 64), dtype=VarType.FP32, name=x)
.. py:method:: unbatch()
该接口将当前InputSpec对象shape[0]值移除。
返回: 更新shape信息后的``InputSpec`` 对象
返回类型:InputSpec
**代码示例**
.. code-block:: python
from paddle.static import InputSpec
x_spec = InputSpec(shape=[4, 64], dtype='float32', name='x')
x_spec.unbatch()
print(x_spec) # InputSpec(shape=(64,), dtype=VarType.FP32, name=x)
.. _cn_api_static_cn_data:
data
-------------------------------
.. py:function:: paddle.static.data(name, shape, dtype='float32', lod_level=0)
该OP会在全局block中创建变量(Variable),该全局变量可被计算图中的算子(operator)访问。该变量可作为占位符用于数据输入。例如用执行器(Executor)feed数据进该变量
注意:
不推荐使用 ``paddle.fluid.layers.data`` ,其在之后的版本中会被删除。请使用这个 ``paddle.static.data`` 。
``paddle.fluid.layers.data`` 在组网期间会设置创建的变量维度(shape)和数据类型(dtype),但不会检查输入数据的维度和数据类型是否符合要求。 ``paddle.static.data`` 会在运行过程中由Executor/ParallelExecutor检查输入数据的维度和数据类型。
如果想输入变长输入,可以使用 ``paddle.static.data`` 时将变长维度设为-1,或者直接输入 ``paddle.fluid.layers.data`` 且PaddlePaddle会按具体输入的形状运行。
本API创建的变量默认 ``stop_gradient`` 属性为true,这意味这反向梯度不会被传递过这个数据变量。如果用户想传递反向梯度,可以设置 ``var.stop_gradient = False`` 。
参数:
- **name** (str)- 被创建的变量的名字,具体用法请参见 :ref:`api_guide_Name` 。
- **shape** (list|tuple)- 声明维度信息的list或tuple。
- **dtype** (np.dtype|VarType|str,可选)- 数据类型,支持bool,float16,float32,float64,int8,int16,int32,int64,uint8。默认值为float32。
- **lod_level** (int,可选)- LoDTensor变量的LoD level数,LoD level是PaddlePaddle的高级特性,一般任务中不会需要更改此默认值,关于LoD level的详细适用场景和用法请见 :ref:`cn_user_guide_lod_tensor` 。默认值为0。
返回:全局变量,可进行数据访问
返回类型:Variable
**代码示例**:
.. code-block:: python
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 = paddle.static.data(name='x', shape=[3, 2, 1], dtype='float32')
# Creates a variable with changable 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 = paddle.static.data(name='y', shape=[-1, 2, 1], dtype='float32')
z = x + y
# In this example, we will feed x and y with np-ndarry "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 = exe.run(fluid.default_main_program(),
feed={
'x': feed_data,
'y': feed_data
},
fetch_list=[z.name])
# np-ndarray of shape=[3, 2, 1], dtype=float32, whose elements are 2
print(out)
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册