batchsize和数据量设置比例_深度学习中batch_size、iterations和epochs等参数的含义

深度学习中涉及到很多参数,下面主要介绍以下几个参数:

batch_size

要说batch_size,就不得不提深度学习的优化算法之一---梯度下降。梯度下降大致可以分为以下三种:批量梯度下降算法(BGD,Batch gradient descent algorithm)

随机梯度下降算法(SGD,Stochastic gradient descent algorithm)

小批量梯度下降算法(MBGD,Mini-batch gradient descent algorithm)

批量梯度下降算法:每一次计算都需要遍历全部数据集,然后更新梯度,所以每一次计算的开销大,并且花费时间长。

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

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

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

iterations

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

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

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

一个迭代 =一个(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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值