网站大量收购独家精品文档,联系QQ:2885784924

深度学习案例教程 教案7.2批处理的原理.docx

深度学习案例教程 教案7.2批处理的原理.docx

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

02批处理的原理

(p9)我们本节课来学习批处理。什么是批处理呢?在深度学习任务中,批处理batchprocessing是一种重要的技术,用于有效的处理大量的数据并进行模型训练。下面我们来详细介绍一下。提出来的背景以及它的原理,还有如何使用。

(p10)在模型训练的时候,一种方法是一个样本一个样本训练,也就是一个样本计算之后,计算出损失值,然后更新所有参数,然后继续下一个样本。这样的方式会导致,如果出现一些极端的样本,或者异常者,则会使得参数调整出现问题。另外这样的方式模型训练速度也比较慢,参数调整是震荡式的,可能一会儿大,一会儿小,不够稳定。

批处理是指将一定数量的样本一起输入到模型中,进行前向传播和反向传播。通常一个批次由多个样本组成,比如16个、32个64个等,需要根据数据量以及内存显存的大小具体设置。每个样本都是一个输入特征和对应的标签。通过批处理,模型可以根据每个批次的误差进行参数更新,从而逐渐优化模型。因为输入的是多个样本,参数更新是拟合这一批样本的总体趋势,这样就减小了异常值的影响,另外参数更新的频率降低了,因为不是每一个样本都会更新一次参数,这样模型训练速度也会提高。举个例子,比如右图的x1,x2,x3是一个样本的3个维度的数字,这是一个属于一个样本,而批处理输入的就是多组这样的数字。

(p11)批处理广泛应用于深度学习任务中。包括图像分类、目标检测、语音识别等等。在这些任务中,大量的数据被划分为小批次,并通过反向传播算法更新模型参数,从而实现模型的训练和优化。

(p12)下面我们来看一下批处理的实现步骤,我们将批处理分为三个步骤,

第一个步骤是数据准备,将数据集划分为小批次。并对数据进行预处理,比如说像对一化数据增强等等。

第二个步骤是批处理迭代,对每个批次进行前向传播和反向传播,计算损失函数并更新模型参数。

第三个步骤是训练迭代。重复批处理迭代的过程,直到完成所有的训练轮次或达到停止条件。

(p13)我们下面来看一段代码。

它就是一个批处理的过程。首先它导入了我们相关的包,导入了我们torch的包,以及我们用来加载数据的dataloader。

首先第一步,我们加载数据集啊,然后进行预处理啊。这里是伪函数,作为参考。因为我们还没有制作好数据集,后面课程会讲到如何准备数据。

然后指定我们这个批次大小为32,并在dataload中,设置了批处理的大小为32。因为pytorch已经定义好了数据集的整个架构,我们只需要使用DataLoader这个函数,就可以调用这个架构,在其中设置这一个参数就可以完成批处理的设置。需要注意的是,具体批大小的选择并没有明确的规定,作为一个超参数,需要大家不断尝试才能寻找到最优的数值。

(p14)下面是训练阶段批处理的方式。这里我们首先定义好模型,这里也是一个伪函数,然后下一行配置好优化器。接下来2层for循环,里面涉及到了批处理。外面这一层循环,每一次表示对整个数据集训练一遍,里面的for循环每一次对一批的数据进行训练。我们可以看到每次循环,都从data_loader这个数据管理器里面拿一批数据出来,拿出来的东西,包括batch_samples,就是一批样本,还有batch_labels就是这一批样本的标签,具体的样本个数就是前面我们设置好的batchsize就是32.下一步就是吧一批样本通过模型计算得到预测标签outputs,然后下一步,计算预测值与真实值的差距,计算损失值,后面三句就是反向传播更新参数了。

(p15)神经网络的训练中,我们对批样本的处理还需要做batchnormalization,也就是归批一化处理。这是一种常用的深度学习技术,主要用于加快神经网络的训练速度,并提高模型上的性能和稳定性。

它是一种在神经网络中对输入进行规范化的技术。它主要通过计算批次数据的均值和标准差。将输入数据进行标准化。使每个特征维度具有零均值和单位方差的一个分布。可以应用于神经网络中的任意层。

(p16)那为什么需要这个批归一化呢?

我们从两个方面来分析,首先第一个是梯度消失与梯度爆炸的问题。那在我们深层神经网络中,由于梯度的连成效应。梯度可能会变得非常小,或者说非常大,导致这个训练过程中的梯度消失或梯度爆炸的问题。比如我们用右边这个sigmoid函数作为激活函数,他的导数只有在0附近大一点,其他地方的导数几乎为0,而且我们的网络一般是很多层的,经过了过层之后,这个导数就会很小了,这就会造成梯度消失,那就是参数更新会很慢。批归化可以缓解这些问题,让这个梯度啊更加稳定,去加速这个训练过程,

那第二个是内部斜变量偏移。在每一层的输入分布发生变化的时候,网络它需要不断适应新的输入分布,这会降低训练的速度和效果。批归一化通过对每个批次的输入进行标准化啊,减少这个内部斜变量偏移的影响,提高

文档评论(0)

xiaobao + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档