机器学习:BATCH和BUF


最近在借助百度飞桨平台学习机器学习的代码的时候,发现很多基础知识都不会,特此记录一下。

1. BATCH

在训练模型的过程中,由于电脑的硬件性能如内存、显存问题,我们不会将数据一次性导入训练,而是分批次,批次就是BATCH,每个批次里面的数据大小就是BATCH_SIZE。

2. BUF

BUFFER为缓冲的意思,因此BUF_SIZE自然就是缓冲数据的大小的意思,表示缓冲区只能存下BUF_SIZE大小的数据。

3. 实例

#用于训练的数据提供器,每次从缓存中随机读取批次大小的数据
train_reader = paddle.batch(
    paddle.reader.shuffle(paddle.dataset.uci_housing.train(), 
                          buf_size=BUF_SIZE),                    
    batch_size=BATCH_SIZE) 

paddle是百度飞桨的深度学习框架,里面有很多封装好的API接口可以直接调用。

batch(reader,batch_size,drop_last=False)共有两个参数,第一个是要读入的数据,第二个是每批次的数据大小(批尺寸),第三个默认为False,表示不丢弃最后一个batch,若修改为True,则修改为丢弃最后一个batch。

在读取数据的过程中,又有一个新的API:buffer(reader, buffer_size),官方文档中这么介绍:

该接口创建一个数据读取器,其功能是将原始数据读取器的数据打乱,然后返回无序的数据。
从原始数据读取器取出buf_size个数据到缓冲区,将缓冲区数据打乱,然后将无序的数据依次返回。当缓冲区数据全部输出后,再次执行上述步骤。

shuffle函数的作用:增加随机性,提高网络的泛化性能,避免因为有规律的数据出现,导致权重更新时的梯度过于极端,避免最终模型过拟合或欠拟合。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WFForstar

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值