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

### Feeders在机器学习中的应用 Feeders通常指的是用于提供数据给机器学习算法的数据加载器或读取器。这些工具能够有效地管理大规模数据集,并确保模型训练过程中数据流的稳定性效率。 #### 数据准备与预处理 为了使机器学习模型有效工作,数据需要经过精心准备预处理阶段。这包括但不限于清洗、标准化以及划分成训练集、验证集测试集。对于像MNIST这样的手写数字图像数据集,在PaddlePaddle框架下可以通过定义`train_reader`来实现这一点[^2]: ```python import paddle BATCH_SIZE = 64 buf_size = 500 # 训练数据读取器设置 train_reader = paddle.batch( paddle.reader.shuffle(paddle.dataset.mnist.train(), buf_size=buf_size), batch_size=BATCH_SIZE ) # 测试数据读取器设置 test_reader = paddle.batch( paddle.dataset.mnist.test(), batch_size=BATCH_SIZE ) ``` 这段代码展示了如何创建一个批量化的读者(`batched reader`),它可以从原始数据集中抽取样本并将其打包成批次(batch),以便更高效地供给到神经网络中进行训练过程[^3]。 #### 使用不同类型的分类器 一旦完成了数据准备工作之后,则可以选择合适的分类方法来进行建模。根据所提到的不同种类的分类技术[^1],可以考虑采用诸如SVM支持向量机分类、KNN最近邻分类或是基于深度学习的方法如CNN卷积神经网络分类等。每种方法都有其特点适用场景,具体选择取决于实际问题的需求及特性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

WFForstar

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

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

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

打赏作者

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

抵扣说明:

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

余额充值