Paddle如何加快读取数据的速度?

在使用Paddle的Fluid版编写模型时,采用PyReader替代executor.run(feed=...)方法读取图像数据,利用异步方式显著提升数据读取速度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 问题描述:在使用Fluid版的Paddle编写模型时,需要对数据进行增量处理,训练数据为图像数据,我对它们做了常规的变形操作,并使用多线程来加速,但感觉数据读取部分依旧很慢,如何解决?

  • 相关代码:

from PIL import Image
import numpy as np
import random

def train_mapper(sample):
    img, label = sample
    img = Image.open(img)
    r1 = random.random()
    if r1 > 0.5:
        img = img.transpose(Image.FLIP_LEFT_RIGHT)
    r2 = random.random()
    if r2 > 0.5:
        img = img.transpose(Image.FLIP_TOP_BOTTOM)

    img = np.array(img).astype(np.float32)
    #转成CHW
    img = img.transpose((2,0,1))
    img = img[(2,1,0),:,:] /255.
    return img, int(label)
  • 解决方法:

Paddle读入数据时使用PyReader对象而不是常见的executor.run(feed=...)方法来读取数据,PyReader对象读取数据使用的是异步方式,读取的速度回快上许多。示例代码如下:

import paddle.fluid as fluid

train_py_reader = fluid.layers.py_reader(capacity=64,
                                         shapes=[(-1,3,224,224), (-1,1)],
                                         dtypes=['float32', 'int64'],
                                         name='train',
                                         use_double_buffer=True)

test_py_reader = fluid.layers.py_reader(capacity=64,
                                        shapes=[(-1,3,224,224), (-1,1)],
                                        dtypes=['float32', 'int64'],
                                        name='test',
                                        use_double_buffer=True)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值