提交 c69d5c65 编写于 作者: G guofei 提交者: Huihuang Zheng

Rewrite the content of py_reader_cn.rst (#1373)

上级 2fe7b343
...@@ -6,21 +6,23 @@ py_reader ...@@ -6,21 +6,23 @@ py_reader
.. py:function:: paddle.fluid.layers.py_reader(capacity, shapes, dtypes, lod_levels=None, name=None, use_double_buffer=True) .. py:function:: paddle.fluid.layers.py_reader(capacity, shapes, dtypes, lod_levels=None, name=None, use_double_buffer=True)
创建一个在Python端提供数据的reader 创建一个在Python端提供数据的reader
该layer返回一个Reader Variable。reader提供了 ``decorate_paddle_reader()`` 和 ``decorate_tensor_provider()`` 来设置Python generator作为数据源。更多细节请参考 :ref:`user_guides_use_py_reader`,在c++端调用 ``Executor::Run()`` 时,来自generator的数据将被自动读取。与 ``DataFeeder.feed()`` 不同,数据读取进程和 ``Executor::Run()`` 进程可以使用 ``py_reader`` 并行运行。reader的 ``start()`` 方法应该在每次数据传递开始时调用,在传递结束和抛出 ``fluid.core.EOFException`` 后执行 ``reset()`` 方法。注意, ``Program.clone()`` 方法不能克隆 ``py_reader`` 。 该OP返回一个Reader Variable。该Reader提供了 ``decorate_paddle_reader()`` 和 ``decorate_tensor_provider()`` 来设置Python generator作为数据源,将数据源中的数据feed到Reader Variable。在c++端调用 ``Executor::Run()`` 时,来自generator的数据将被自动读取。与 ``DataFeeder.feed()`` 不同,数据读取进程和 ``Executor::Run()`` 进程可以使用 ``py_reader`` 并行运行。在每次数据传递开始时调用reader的 ``start()`` ,在传递结束和抛出 ``fluid.core.EOFException`` 异常后执行 ``reset()`` 。
注意: ``Program.clone()`` (含义详见 :ref:`cn_api_fluid_Program` )不能克隆 ``py_reader`` ,且 ``read_file`` ( ``read_file`` 含义详见 :ref:`cn_api_fluid_layers_read_file` )调用需在声明 ``py_reader`` 的program block内。
参数: 参数:
- **capacity** (int) – ``py_reader`` 维护的缓冲区容量 - **capacity** (int) – ``py_reader`` 维护的缓冲区的容量数据个数。
- **shapes** (list|tuple) –数据形状的元组或列表 - **shapes** (list|tuple) – 一个列表或元组,shapes[i]是代表第i个数据shape,因此shape[i]也是元组或列表。
- **dtypes** (list|tuple) – ``shapes`` 对应元素的数据类型 - **dtypes** (list|tuple) – 一个string的列表或元组。为 ``shapes`` 对应元素的数据类型,支持bool,float16,float32,float64,int8,int16,int32,int64,uint8。
- **lod_levels** (list|tuple) – lod_level的整型列表或元组 - **lod_levels** (list|tuple) – lod_level的整型列表或元组
- **name** (basestring) – python 队列的前缀名称和Reader 名称。不会自动生成 - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None
- **use_double_buffer** (bool) – 是否使用双缓冲 - **use_double_buffer** (bool) – 是否使用双缓冲区,双缓冲区是为了预读下一个batch的数据、异步CPU -> GPU拷贝。默认值为True。
返回: reader,从reader中可以获取feed的数据 返回:reader,从reader中可以获取feed的数据,其dtype和feed的数据dtype相同。
返回类型: Variable 返回类型Variable
...@@ -35,7 +37,7 @@ py_reader ...@@ -35,7 +37,7 @@ py_reader
import paddle.dataset.mnist as mnist import paddle.dataset.mnist as mnist
def network(image, label): def network(image, label):
# 用户自定义网络,此处以softmax回归为例 # 用户自定义网络,此处以softmax回归为例
predict = fluid.layers.fc(input=image, size=10, act='softmax') predict = fluid.layers.fc(input=image, size=10, act='softmax')
return fluid.layers.cross_entropy(input=predict, label=label) return fluid.layers.cross_entropy(input=predict, label=label)
...@@ -75,7 +77,7 @@ py_reader ...@@ -75,7 +77,7 @@ py_reader
def network(reader): def network(reader):
img, label = fluid.layers.read_file(reader) img, label = fluid.layers.read_file(reader)
# 用户自定义网络,此处以softmax回归为例 # 用户自定义网络,此处以softmax回归为例
predict = fluid.layers.fc(input=img, size=10, act='softmax') predict = fluid.layers.fc(input=img, size=10, act='softmax')
loss = fluid.layers.cross_entropy(input=predict, label=label) loss = fluid.layers.cross_entropy(input=predict, label=label)
return fluid.layers.mean(loss) return fluid.layers.mean(loss)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册