From 358a3ff2a50eb2a95ab8e4cb906165fb611d61d8 Mon Sep 17 00:00:00 2001 From: sneaxiy Date: Sat, 10 Nov 2018 22:29:36 +0800 Subject: [PATCH] add data_feeder_api_guide --- .../low_level/layers/data_feeder.rst | 44 +++++++++++++++++++ .../low_level/layers/data_in_out.rst | 2 +- 2 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 doc/fluid/api/api_guides/low_level/layers/data_feeder.rst diff --git a/doc/fluid/api/api_guides/low_level/layers/data_feeder.rst b/doc/fluid/api/api_guides/low_level/layers/data_feeder.rst new file mode 100644 index 000000000..770116dfb --- /dev/null +++ b/doc/fluid/api/api_guides/low_level/layers/data_feeder.rst @@ -0,0 +1,44 @@ +.. _api_guide_data_feeder: + +使用DataFeeder传入训练/预测数据 +################################### + +Fluid提供 :code:`DataFeeder` 类,将numpy array等数据转换为 :code:`LoDTensor` 类型传入训练/预测网络。 + +用户创建 :code:`DataFeeder` 对象的方式为: + +.. code-block:: python + + import paddle.fluid as fluid + + image = fluid.layers.data(name='image', shape=[-1, 3, 224, 224], dtype='float32') + label = fluid.layers.data(name='label', shape=[-1, 1], dtype='int64') + place = fluid.CUDAPlace(0) if fluid.core.is_compiled_with_cuda() else fluid.CPUPlace() + feeder = fluid.DataFeeder(feed_list=[image, label], place=place) + +其中,:code:`feed_list` 参数为变量列表,这些变量由 :code:`fluid.layers.data()` 创建, +:code:`place` 参数表示应将Python端传入的numpy array等数据转换为GPU端或是CPU端的 :code:`LoDTensor` 。 +创建 :code:`DataFeeder` 对象后,用户可调用其 :code:`feed(iterable)` 方法将用户传入的 +:code:`iterable` 数据转换为 :code:`LoDTensor`。 + +:code:`iterable` 应为Python List或Tuple类型对象,且 :code:`iterable` 的每个元素均为长度为N的 +Python List或Tuple类型对象,其中N为创建 :code:`DataFeeder` 对象时传入的 :code:`feed_list` 变量个数。 + +:code:`iterable` 的具体格式为: + +.. code-block:: python + + iterable = [ + (image_1, label_1), + (image_2, label_2), + ... + (image_n, label_n) + ] + +其中,:code:`image_i` 与 :code:`label_i` 均为numpy array类型数据。若传入数据的维度为[1],如 :code:`label_i`, +则可传入Python int、float等类型数据。 :code:`image_i` 与 :code:`label_i` 的数据类型和维度不必 +与 :code:`fluid.layers.data()` 创建时指定的 :code:`dtype` 和 :code:`shape` 完全一致,:code:`DataFeeder` 内部 +会完成数据类型和维度的转换。若 :code:`feed_list` 中的变量的 :code:`lod_level` 不为零,则Fluid会将经过维度转换后的 +:code:`iterable` 中每行数据的第0维作为返回结果的 :code:`LoD`。 + +具体使用方法请参见 :ref:`api_fluid_DataFeeder` 。 \ No newline at end of file diff --git a/doc/fluid/api/api_guides/low_level/layers/data_in_out.rst b/doc/fluid/api/api_guides/low_level/layers/data_in_out.rst index ca12c4152..9d0a2521e 100644 --- a/doc/fluid/api/api_guides/low_level/layers/data_in_out.rst +++ b/doc/fluid/api/api_guides/low_level/layers/data_in_out.rst @@ -17,7 +17,7 @@ Fluid支持两种数据输入方式,包括: 方法送入训练/预测数据,C++端的训练/预测程序调用队列的 :code:`pop` 方法取出Python端送入的数据。PyReader可与 :code:`double_buffer` 配合使用,实现数据读取和训练/预测的异步执行。 -具体使用方法请参考 :ref:`user_guide_use_py_reader`。 +具体使用方法请参考 :ref:`api_fluid_layers_py_reader`。 数据输出 -- GitLab