电商的网站怎么做的,深圳网站优化最好的方法,在线免费制作头像logo设计,网站网络排名优化方法使用batch训练神经网络时#xff0c;每次模型训练#xff0c;更新权重时#xff0c;就拿一个batch的样本来更新权重。
求损失loss用于梯度下降#xff0c;更新权重时#xff0c;有几种方式。一种是全部的样本用来求loss#xff0c;这种方式称为批量梯度下降(BGD)#x…使用batch训练神经网络时每次模型训练更新权重时就拿一个batch的样本来更新权重。
求损失loss用于梯度下降更新权重时有几种方式。一种是全部的样本用来求loss这种方式称为批量梯度下降(BGD)一种是随机的选取一个样本求loss进而求梯度这种方式称为随机梯度下降(SGD)BGD和SGB的这种产生了第三种梯度下降的方法小批量梯度下降(MBGD)。
当我们使用批量梯度下降BGD方法来更新权重时面临一个问题当陷入局域最小点时梯度为0时无论怎么更新权重loss都不再改变从而无法找到全局最优点。
而随机梯度下降SGB是随机选取一个样本求loss进而求梯度。这种方式就很大程度上规避了梯度为0的情况即使某次训练更新权重时梯度为0下次也不一定为0。而批量梯度下降BGD则不然本次更新权重时梯度为0下次还是0。梯度下降法就失效了。
但批量梯度下降BGD和随机梯度下降SGD有各自的优缺点
1.使用批量梯度下降BGD时虽然模型的性能低但耗费时间时间也低。由于其求梯度更新权重时可以并行计算因此是求所有样本损失的累加和
2.使用随机梯度下降SGD时虽然模型的性能高但耗费的时间也高。由于其求梯度更新权重时不可以并行计算。某步更新权重要依赖上一步权重
因此就提出了一种折中的方法小批量梯度下降(MBGD)
Epoch1个epoch等于使用训练集中的全部样本训练一次通俗的讲几次epoch就是整个数据集被轮几次
Iteration1个iteration等于使用batchsize个样本训练一次也就是说训练一批的样本称为一次迭代。比如训练集有500个样本batchsize 10 那么训练完整个样本集iteration50epoch1.
batchsize最大是样本总数N此时就是Full batch learning最小是1即每次只训练一个样本这就是在线学习Online Learning。 关于BGDSGDMBGD的数学原理可以参考https://www.cnblogs.com/lliuye/p/9451903.html
从数学公式中我们可以知道batchsize越大并行效率越高梯度下降更稳定但训练总时间不一定就短但对显存占用更大。
训练总时间 一次网络参数更新所需的计算时间和梯度计算并行效率有关理想情况下并行计算2个样本和并行计算200个样本所需时间一样X 收敛所需更新次数和梯度收敛速度有关参数更新了多少次更新方向正确与否
训练总时间和batchsize的关系和Mem大小CUDA流处理器数量单个样本的梯度计算复杂度梯度收敛速度均有关。
假设Mem很大但是CUDA流处理器数量少那么 batchsize越大训练总时间有可能会长很多因为最后计算的样本可能很多计算的样本梯度多但是网络参数的更新次数少收敛慢。
一次性加载进显存不等于CUDA流处理器能一次并行完。