深度学习中的一些概念batch_size

Dataloader 就是一个迭代器,最基本的使用就是传入一个 Dataset 对象,它就会根据参数 batch_size 的值生成一个 batch 的数据。

batch_size:1次迭代所使用的样本量

pytorch 训练模型时调用数据不是一行一行进行的(这样太没效率),而是 一捆一捆的,这里定义每次输入神经网络多少行数据
要说batch_size,就不得不提深度学习的优化算法之一—梯度下降。梯度下降大致可以分为以下三种:

  1. 批量梯度下降算法(BGD,Batch gradient descent algorithm)
  2. 随机梯度下降算法(SGD,Stochastic gradient descent algorithm)
  3. 小批量梯度下降算法(MBGD,Mini-batch gradient descent algorithm)
  • 批量梯度下降算法:每一次计算都需要遍历全部数据集,然后更新梯度,所以每一次计算的开销大,并且花费时间长。

  • 随机梯度下降算法:每次随机选取一条数据,然后求梯度更新参数,这种方法计算速度快,但是收敛性能不太好,可能在最优点附近来回摆动,很难找到最优点。每次随机选取的一个数据去更新梯度,也可能互相抵消掉,造成目标函数震荡的比较剧烈。

为了克服两种方法的缺点,现在一般采用的是一种折中手段–-小批量梯度下降算法。这种方法把训练数据集分为若干个批,用每批量来更新参数,这样,一个批中的一组数据共同决定了本次梯度的方向,下降起来就不容易跑偏,减少了随机性。另一方面小批量选取的样本数与整个数据集相比小了很多,所以计算量也不是很大。

tf框架中batchsize指的就是更新梯度中使用的样本数量。当然这里如果把batch_size设置为训练数据集的长度,就成了批量梯度下降算法,batch_size设置为1就是随机梯度下降算法

iteration

迭代次数,每一次迭代都会更新一次网络结构的参数

迭代是重复反馈的动作,神经网络中我们希望通过迭代进行多次的训练来训练模型,从而达到所需的目标或结果。

每一次迭代得到的结果都会被作为下一次迭代的初始值。

一个迭代 = 一个(batchsize)数据正向通过(forward)+ 一个(batch_size)数据反向(backward)

在这里插入图片描述

前向传播:构建由(x1,x2,x3)得到输出hwb(x)的表达式

反向传播:基于给定的损失函数,求解参数的过程

epochs

epochs指的就是训练过程中训练数据集合将被“轮”多少次。每一“轮”是全部数据都被使用过一次(全部使用不是必须的)

例如在某次模型训练过程中,总的样本数是100000,batch_size=512,epochs=2,其对应的伪代码如下:

data 
batch_size = 512
for i in range(epochs):
   for j in range(int(data_length / batch_size - 1)):
        x_data = data[begin:end, ]
        y_data = data[begin:end, ]
        mode.train(x_data, y_data)
   begin += batch_size
   end += batch_size
其中iterations = data_length / batchsize


  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值