Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
FluidDoc
提交
a94b7ab9
F
FluidDoc
项目概览
PaddlePaddle
/
FluidDoc
通知
5
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
23
列表
看板
标记
里程碑
合并请求
111
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
F
FluidDoc
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
23
Issue
23
列表
看板
标记
里程碑
合并请求
111
合并请求
111
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
a94b7ab9
编写于
6月 25, 2018
作者:
Y
yuyang18
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Follow comments
上级
0313009c
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
56 addition
and
19 deletion
+56
-19
source/user_guides/howto/prepare_data/feeding_data.rst
source/user_guides/howto/prepare_data/feeding_data.rst
+42
-11
source/user_guides/howto/prepare_data/index.rst
source/user_guides/howto/prepare_data/index.rst
+6
-3
source/user_guides/howto/prepare_data/use_recordio_reader.rst
...ce/user_guides/howto/prepare_data/use_recordio_reader.rst
+8
-5
未找到文件。
source/user_guides/howto/prepare_data/feeding_data.rst
浏览文件 @
a94b7ab9
.. _user_guide_use_numpy_array_as_train_data:
###########################
...
...
@@ -29,21 +28,22 @@ PaddlePaddle Fluid支持使用 :ref:`api_fluid_layers_data` 配置数据层;
上段代码中,:code:`image` 和 :code:`label` 是通过 :code:`fluid.layers.data`
创建的两个输入数据层。其中 :code:`image` 是 :code:`[3, 224, 224]` 维度的浮点数据;
:code:`
data
` 是 :code:`[1]` 维度的整数数据。这里需要注意的是:
:code:`
label
` 是 :code:`[1]` 维度的整数数据。这里需要注意的是:
1. Fluid中默认使用 :code:`-1` 表示 batch size 维度,默认情况下会在 :code:`shape`
的第一个维度添加 :code:`-1` 。 所以 上段代码中, 我们可以接受将一个
:code:`[32, 3, 224, 224]`的numpy array传给 :code:`image`。 如果想自定义batch size
维度的位置的话,请设置 :code:`fluid.layers.data(append_batch_size=False)` 。
的第一个维度添加 :code:`-1` 。 所以 上段代码中, 我们可以接受将一个
:code:`[32, 3, 224, 224]` 的numpy array传给 :code:`image` 。 如果想自定义batch size
维度的位置的话,请设置 :code:`fluid.layers.data(append_batch_size=False)` 。
请参考进阶使用中的 :ref:`user_guide_customize_batch_size_rank` 。
2. Fluid中
目前使用 :code:`int64` 表示类别标签
。
2. Fluid中
用来做类别标签的数据类型是 :code:`int64`,并且标签从0开始
。
传递训练数据给执行器
####################
:code:`Executor.run` 和 :code:`ParallelExecutor.run` 都接受一个 :code:`feed` 参数。
这个参数是一个Python的字典。
他的键是数据层的名字,例如上文代码中的
:code:`image`。
他
的值是对应的numpy array。
这个参数是一个Python的字典。
它的键是数据层的名字,例如上文代码中的
:code:`image`。
它
的值是对应的numpy array。
例如:
...
...
@@ -62,8 +62,9 @@ PaddlePaddle Fluid支持使用 :ref:`api_fluid_layers_data` 配置数据层;
----------------
序列数据是PaddlePaddle Fluid支持的特殊数据类型,可以使用 :code:`LoDTensor` 作为
输入数据类型。它需要用户传入一个mini-batch需要被训练的所有数据和每个序列的长度信息。
具体可以使用 :code:`fluid.create_lod_tensor` 来创建 :code:`LoDTensor`。
输入数据类型。它需要用户: 1. 传入一个mini-batch需要被训练的所有数据;
2.每个序列的长度信息。
用户可以使用 :code:`fluid.create_lod_tensor` 来创建 :code:`LoDTensor`。
传入序列信息的时候,需要设置序列嵌套深度,:code:`lod_level`。
例如训练数据是词汇组成的句子,:code:`lod_level=1`;训练数据是 词汇先组成了句子,
...
...
@@ -114,4 +115,34 @@ PaddlePaddle Fluid支持使用 :ref:`api_fluid_layers_data` 配置数据层;
]
)
上述代码中,GPU0会训练 32 个样本,而 GPU1训练 16 个样本。
\ No newline at end of file
上述代码中,GPU0会训练 32 个样本,而 GPU1训练 16 个样本。
.. _user_guide_customize_batch_size_rank:
自定义BatchSize维度
-------------------
PaddlePaddle Fluid默认batch size是数据的第一维度,以 :code:`-1` 表示。但是在高级
使用中,batch_size 可以固定,也可以是其他维度或者多个维度来表示。这都需要设置
:code:`fluid.layers.data(append_batch_size=False)` 来完成。
1. 固定batch size维度
.. code-block:: python
image = fluid.layers.data(name="image", shape=[32, 784], append_batch_size=False)
这里,:code:`image` 永远是一个 :code:`[32, 784]` 大小的矩阵。
2. 使用其他维度表示batch size
.. code-block:: python
sentence = fluid.layers.data(name="sentence",
shape=[80, -1, 1],
append_batch_size=False,
dtype="int64")
这里 :code:`sentence` 的中间维度是batch size。这种数据排布会用在定长的循环神经
网络中。
\ No newline at end of file
source/user_guides/howto/prepare_data/index.rst
浏览文件 @
a94b7ab9
...
...
@@ -4,9 +4,13 @@
准备数据
########
PaddlePaddle Fluid支持两种传入数据的方式: 一种用户需要使用 :code:`fluid.layers.data`
PaddlePaddle Fluid支持两种传入数据的方式:
1. 用户需要使用 :code:`fluid.layers.data`
配置数据输入层,并在 :ref:`api_guide_executor` 或 :ref:`api_guide_parallel_executor`
中,使用 :code:`executor.run(feed=...)` 传入训练数据; 另一种用户需要先将训练数据
中,使用 :code:`executor.run(feed=...)` 传入训练数据。
2. 用户需要先将训练数据
转换成 Paddle 识别的 :ref:`api_guide_recordio_file_format` , 再使用
:code:`fluid.layers.open_files` 以及 :ref:`api_guide_reader` 配置数据读取。
...
...
@@ -36,7 +40,6 @@ PaddlePaddle Fluid支持两种传入数据的方式: 一种用户需要使用
feeding_data
use_recordio_reader
#############
Python Reader
#############
...
...
source/user_guides/howto/prepare_data/use_recordio_reader.rst
浏览文件 @
a94b7ab9
...
...
@@ -46,9 +46,10 @@
BATCH_SIZE = 32
reader = paddle.batch(reader_creator(), batch_size=BATCH_SIZE)
fluid.recordio_writer.convert_reader_to_recordio_file(
"train.recordio", feeder=feeder, reader_creator=
train_
reader)
"train.recordio", feeder=feeder, reader_creator=reader)
其中 :code:`reader_creator` 创建了一个 :code:`Reader`。 :code:`fluid.DataFeeder`
其中 :code:`reader_creator` 创建了一个 :code:`Reader`。
:ref:`_api_fluid_data_feeder_DataFeeder`
是将 :code:`Reader` 转换成 :code:`LoDTensor` 的工具。详细请参考
:ref:`user_guide_reader` 。
...
...
@@ -102,6 +103,8 @@ RecordIO文件转换好之后,用户可以使用 :ref:`api_fluid_layers_open_f
image, label = fluid.layers.read_file(file_obj)
双缓冲技术可以参考
`Multiple buffering <https://en.wikipedia.org/wiki/Multiple_buffering>`_ 。
配置数据增强
------------
...
...
@@ -145,7 +148,7 @@ RecordIO文件转换好之后,用户可以使用 :ref:`api_fluid_layers_open_f
读入数据的shuffle
-----------------
使用 :ref:`api_fluid_layers_shuffle` 可以在训练过程中动态重
拍
训练数据。例如
使用 :ref:`api_fluid_layers_shuffle` 可以在训练过程中动态重
排
训练数据。例如
.. code-block:: python
...
...
@@ -157,8 +160,8 @@ RecordIO文件转换好之后,用户可以使用 :ref:`api_fluid_layers_open_f
需要注意的是:
1. :code:`shuffle`
的实现先读入 :code:`buffer_size` 条样本,再随机的选出样本进行
训练。
1. :code:`shuffle`
实现方法是:
先读入 :code:`buffer_size` 条样本,再随机的选出样本进行
训练。
2. :code:`shuffle` 中 :code:`buffer_size` 会占用训练内存,需要确定训练过程中内存
足够支持缓存 :code:`buffer_size` 条数据。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录