Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
FluidDoc
提交
563a5728
F
FluidDoc
项目概览
PaddlePaddle
/
FluidDoc
通知
10
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看板
提交
563a5728
编写于
9月 30, 2019
作者:
G
guofei
提交者:
Zeng Jinle
9月 30, 2019
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Rewrite the content of PyReader_cn.rst develop=test (#1396)
* fix PyReader develop=test * rewrite PyReader_cn.rst develop=test
上级
56b421a5
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
76 addition
and
44 deletion
+76
-44
doc/fluid/api_cn/io_cn/PyReader_cn.rst
doc/fluid/api_cn/io_cn/PyReader_cn.rst
+76
-44
未找到文件。
doc/fluid/api_cn/io_cn/PyReader_cn.rst
浏览文件 @
563a5728
...
...
@@ -23,7 +23,7 @@ PyReader
**代码示例**
1.如果iterable=False,则创建的PyReader对象几乎与 ``fluid.layers.py_reader()`` 相同。算子将被插入program中。用户应该在每个epoch之前调用
start(),并在epoch结束时捕获 ``Executor.run()`` 抛出的 ``fluid.core.EOFException `` 。一旦捕获到异常,用户应该调用reset()
手动重置reader。
1.如果iterable=False,则创建的PyReader对象几乎与 ``fluid.layers.py_reader()`` 相同。算子将被插入program中。用户应该在每个epoch之前调用
``start()`` ,并在epoch结束时捕获 ``Executor.run()`` 抛出的 ``fluid.core.EOFException`` 。一旦捕获到异常,用户应该调用 ``reset()``
手动重置reader。
.. code-block:: python
...
...
@@ -34,6 +34,11 @@ PyReader
EPOCH_NUM = 3
ITER_NUM = 5
BATCH_SIZE = 3
def network(image, label):
# 用户定义网络,此处以softmax回归为例
predict = fluid.layers.fc(input=image, size=10, act='softmax')
return fluid.layers.cross_entropy(input=predict, label=label)
def reader_creator_random_image_and_label(height, width):
def reader():
...
...
@@ -55,8 +60,9 @@ PyReader
user_defined_reader = reader_creator_random_image_and_label(784, 784)
reader.decorate_sample_list_generator(
paddle.batch(user_defined_reader, batch_size=BATCH_SIZE))
# 此处省略网络定义
executor = fluid.Executor(fluid.CUDAPlace(0))
loss = network(image, label)
executor = fluid.Executor(fluid.CPUPlace())
executor.run(fluid.default_startup_program())
for i in range(EPOCH_NUM):
reader.start()
...
...
@@ -80,26 +86,34 @@ PyReader
ITER_NUM = 5
BATCH_SIZE = 10
def network(image, label):
# 用户定义网络,此处以softmax回归为例
predict = fluid.layers.fc(input=image, size=10, act='softmax')
return fluid.layers.cross_entropy(input=predict, label=label)
def reader_creator_random_image(height, width):
def reader():
for i in range(ITER_NUM):
yield np.random.uniform(low=0, high=255, size=[height, width]),
fake_image = np.random.uniform(low=0, high=255, size=[height, width]),
fake_label = np.ones([1])
yield fake_image, fake_label
return reader
image = fluid.layers.data(name='image', shape=[784, 784], dtype='float32')
reader = fluid.io.PyReader(feed_list=[image], capacity=4, iterable=True, return_list=False)
label = fluid.layers.data(name='label', shape=[1], dtype='int64')
reader = fluid.io.PyReader(feed_list=[image, label], capacity=4, iterable=True, return_list=False)
user_defined_reader = reader_creator_random_image(784, 784)
reader.decorate_sample_list_generator(
paddle.batch(user_defined_reader, batch_size=BATCH_SIZE),
fluid.core.C
UDAPlace(0
))
# 此处省略网络定义
executor = fluid.Executor(fluid.C
UDAPlace(0
))
executor.run(fluid.default_
main
_program())
fluid.core.C
PUPlace(
))
loss = network(image, label)
executor = fluid.Executor(fluid.C
PUPlace(
))
executor.run(fluid.default_
startup
_program())
for _ in range(EPOCH_NUM):
for data in reader():
executor.run(feed=data)
executor.run(feed=data
, fetch_list=[loss]
)
3. return_list=True,返回值将用list表示而非dict,通常用于动态图模式中。
...
...
@@ -153,7 +167,7 @@ PyReader
reader.decorate_sample_list_generator(
paddle.batch(generator, batch_size=BATCH_SIZE))
executor = fluid.Executor(fluid.C
UDAPlace(0
))
executor = fluid.Executor(fluid.C
PUPlace(
))
executor.run(fluid.default_startup_program())
for i in range(3):
reader.start()
...
...
@@ -175,19 +189,19 @@ PyReader
import paddle
import paddle.fluid as fluid
import numpy as np
BATCH_SIZE = 10
def generator():
for i in range(5):
yield np.random.uniform(low=0, high=255, size=[784, 784]),
image = fluid.layers.data(name='image', shape=[784, 784], dtype='float32')
reader = fluid.io.PyReader(feed_list=[image], capacity=4, iterable=False)
reader.decorate_sample_list_generator(
paddle.batch(generator, batch_size=BATCH_SIZE))
executor = fluid.Executor(fluid.C
UDAPlace(0
))
executor = fluid.Executor(fluid.C
PUPlace(
))
executor.run(fluid.default_startup_program())
for i in range(3):
reader.start()
...
...
@@ -224,7 +238,12 @@ PyReader
EPOCH_NUM = 3
ITER_NUM = 15
BATCH_SIZE = 3
def network(image, label):
# 用户定义网络,此处以softmax回归为例
predict = fluid.layers.fc(input=image, size=10, act='softmax')
return fluid.layers.cross_entropy(input=predict, label=label)
def random_image_and_label_generator(height, width):
def generator():
for i in range(ITER_NUM):
...
...
@@ -234,22 +253,22 @@ PyReader
fake_label = np.array([1])
yield fake_image, fake_label
return generator
image = fluid.layers.data(name='image', shape=[784, 784], dtype='float32')
label = fluid.layers.data(name='label', shape=[1], dtype='int
32
')
label = fluid.layers.data(name='label', shape=[1], dtype='int
64
')
reader = fluid.io.PyReader(feed_list=[image, label], capacity=4, iterable=True)
user_defined_generator = random_image_and_label_generator(784, 784)
reader.decorate_sample_generator(user_defined_generator,
batch_size=BATCH_SIZE,
places=[fluid.C
UDAPlace(0
)])
# 省略了网络的定义
executor = fluid.Executor(fluid.C
UDAPlace(0
))
executor.run(fluid.default_
main
_program())
places=[fluid.C
PUPlace(
)])
loss = network(image, label)
executor = fluid.Executor(fluid.C
PUPlace(
))
executor.run(fluid.default_
startup
_program())
for _ in range(EPOCH_NUM):
for data in reader():
executor.run(feed=data)
executor.run(feed=data
, fetch_list=[loss]
)
.. py:method:: decorate_sample_list_generator(reader, places=None)
...
...
@@ -274,7 +293,12 @@ PyReader
EPOCH_NUM = 3
ITER_NUM = 15
BATCH_SIZE = 3
def network(image, label):
# 用户定义网络,此处以softmax回归为例
predict = fluid.layers.fc(input=image, size=10, act='softmax')
return fluid.layers.cross_entropy(input=predict, label=label)
def random_image_and_label_generator(height, width):
def generator():
for i in range(ITER_NUM):
...
...
@@ -284,22 +308,22 @@ PyReader
fake_label = np.ones([1])
yield fake_image, fake_label
return generator
image = fluid.layers.data(name='image', shape=[784, 784], dtype='float32')
label = fluid.layers.data(name='label', shape=[1], dtype='int
32
')
label = fluid.layers.data(name='label', shape=[1], dtype='int
64
')
reader = fluid.io.PyReader(feed_list=[image, label], capacity=4, iterable=True)
user_defined_generator = random_image_and_label_generator(784, 784)
reader.decorate_sample_list_generator(
paddle.batch(user_defined_generator, batch_size=BATCH_SIZE),
fluid.core.C
UDAPlace(0
))
# 省略了网络的定义
executor = fluid.Executor(fluid.core.C
UDAPlace(0
))
executor.run(fluid.default_
main
_program())
fluid.core.C
PUPlace(
))
loss = network(image, label)
executor = fluid.Executor(fluid.core.C
PUPlace(
))
executor.run(fluid.default_
startup
_program())
for _ in range(EPOCH_NUM):
for data in reader():
executor.run(feed=data)
executor.run(feed=data
, fetch_list=[loss]
)
.. py:method:: decorate_batch_generator(reader, places=None)
...
...
@@ -323,7 +347,12 @@ PyReader
EPOCH_NUM = 3
ITER_NUM = 15
BATCH_SIZE = 3
def network(image, label):
# 用户定义网络,此处以softmax回归为例
predict = fluid.layers.fc(input=image, size=10, act='softmax')
return fluid.layers.cross_entropy(input=predict, label=label)
def random_image_and_label_generator(height, width):
def generator():
for i in range(ITER_NUM):
...
...
@@ -331,24 +360,27 @@ PyReader
high=255,
size=[BATCH_SIZE, height, width])
batch_label = np.ones([BATCH_SIZE, 1])
batch_image = batch_image.astype('float32')
batch_label = batch_label.astype('int64')
yield batch_image, batch_label
return generator
image = fluid.layers.data(name='image', shape=[784, 784], dtype='float32')
label = fluid.layers.data(name='label', shape=[1], dtype='int
32
')
label = fluid.layers.data(name='label', shape=[1], dtype='int
64
')
reader = fluid.io.PyReader(feed_list=[image, label], capacity=4, iterable=True)
user_defined_generator = random_image_and_label_generator(784, 784)
reader.decorate_batch_generator(user_defined_generator, fluid.CUDAPlace(0))
# 省略了网络的定义
executor = fluid.Executor(fluid.CUDAPlace(0))
executor.run(fluid.default_main_program())
reader.decorate_batch_generator(user_defined_generator, fluid.CPUPlace())
loss = network(image, label)
executor = fluid.Executor(fluid.CPUPlace())
executor.run(fluid.default_startup_program())
for _ in range(EPOCH_NUM):
for data in reader():
executor.run(feed=data)
executor.run(feed=data
, fetch_list=[loss]
)
.. py:method:: next()
获取下一个数据。用户不应直接调用此方法。此方法用于PaddlePaddle框架内部实现Python 2.x的迭代器协议。
\ No newline at end of file
获取下一个数据。用户不应直接调用此方法。此方法用于PaddlePaddle框架内部实现Python 2.x的迭代器协议。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录