首页 > 编程知识 正文

深度学习框架参数教程,深度学习框架参数计算

时间:2023-05-03 10:29:31 阅读:157566 作者:1804

在训练网络之前需要设置很多参数,如果不知道各个参数的含义,就无法恰当地设置参数值,训练效果也会受到很大的影响。 该博客还可以记录网络培训Batch Size、Iterations和Epochs是如何理解的,便于以后了解模型微调和冻结培训等技巧。

文章目录一、引言二、Batch Size三、Iterations四、Epochs五、举栗

一.引言

首先,我们需要知道为什么会出现Batch Size这个概念。 深度学习算法是迭代的,为了得到优化的结果,多次使用算法获取结果。 有两种方法和两种极端方法可以迭代更新网络参数。

第一个是Batch Gradient Descent,批处理梯度下降,即把所有数据一次性输入进网络查看数据集内的所有样本,计算损失函数,更新参数。 该方式计算量开销大,速度也慢,不支持在线学习。

第二个是Stochastic Gradient Descent,随机斜率下降为把每次只把一个数据输入进网络,每看一个数据就计算损失函数并更新参数。 该方案虽然速度比较快,但收敛性能差,可能在最接近优点的地方振动,两次参数的更新也可能相互抵消。

因此,由于这两种方式都存在问题,目前通常采用两种方式的折衷方案,从而降低了最小批量梯度。 在把数据进行切片,划分为若干个批中,按批更新参数。 这样,一批中的一组数据共同决定了这次的坡度方向,下降后就很难曲折,减少了随机性。 另外,由于批量的样本数比整个数据集小很多,所以计算量也不是很多。

二、BatchsizeBatch_size是指每次训练所选取的样本数,通俗地说是指一个batch中的样品总数、一次提供给网络的样品数。 batch_size的选择会影响坡度下降的方向。

在合理范围内增大batch_size具有以下优点:

在存储器使用率高、矩阵乘法运算并行化效率提高、跑完全部数据所需的重复次数少、能够进一步加快对相同数据量的处理速度的一定范围内,一般batch_size越大,其确定的下降方向越正确,托盘但请参阅不能盲目增大

内存容量不足,可能报告错误的运行时错误: cuda out of memory; 奔跑整个数据集所需的迭代次数减少,为了达到相同的精度,所需的时间大幅增加,参数的修改也更慢。 当batch_size增大到一定程度时,其确定的下降方向几乎不变。 三. Iterations被称为Iterations,为训练完全部数据需要迭代的次数。 通俗地说,iteration是指使用batch_size个样本对网络进行一次训练,Iterations是整个数据集被分割的批量,数值上等于data ()

根据batch_size将所有采样数据切片,并分割成iterations块。 每个iteration完成后,网络结构的参数都会更新,每次迭代的结果将用作下一次迭代的初始值。

1个iteration=个batch_size的数据进行1次forward propagation和1次backward propagation。

四. Epochs的epochs是指前向传播和反向传播过程中所有批次的训练迭代次数,一个epoch是整个数据集的一次前向传播和反向传播,通俗地说,就是在训练过程中所有数据都要发送到网络训练中多少次

为什么要用多个epoch进行训练呢? 因为通过神经网络传递完整的数据集一次是不够的,所以必须通过同一神经网络多次传递完整的数据集。 因为我们使用了有限的数据集,所以只更新一次权重或使用一个epoch是不够的。

如果epochs太小,则网络可能会出现失配; 如果epochs太大,可能会发生拟合。 具体如何选择要根据实验结果进行判断和选择,不同的数据集选择的epochs不同。

五.板栗有1024个训练样本,假设batch_size=8,epochs=10,每个epoch训练1024/8=128个iteration,共有1024个训练样本是这样的

总结:

1. Batch利用一小部分训练集样本对模型权重进行一次逆传播的参数更新。 这个样本的一小部分被称为“一组数据”。

2. Iteration是使用单个Batch数据更新模型参数的过程,称为“一次训练”。

3. Epoch使用训练集中的所有数据对模型进行完整训练,称为“世代训练”。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。