机器学习:BATCH和BUF

文章目录

  • 1. BATCH
  • 2. BUF
  • 3. 实例

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

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

你可能感兴趣的:(笔记,机器学习,batch,深度学习)