前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >batch size设置

batch size设置

作者头像
狼啸风云
修改于 2022-09-02 13:26:01
修改于 2022-09-02 13:26:01
3.9K0
举报

深度学习中经常看到epoch、 iteration和batchsize,下面按自己的理解说说这三个的区别:

(1)batchsize:批大小。在深度学习中,一般采用SGD训练,即每次训练在训练集中取batchsize个样本训练; (2)iteration:1个iteration等于使用batchsize个样本训练一次; (3)epoch:1个epoch等于使用训练集中的全部样本训练一次;

举个例子,训练集有1000个样本,batchsize=10,那么: 训练完整个样本集需要: 100次iteration,1次epoch。

1.当数据量足够大的时候可以适当的减小batch_size,由于数据量太大,内存不够。但盲目减少会导致无法收敛,batch_size=1时为在线学习,也是标准的SGD,这样学习,如果数据量不大,noise数据存在时,模型容易被noise带偏,如果数据量足够大,noise的影响会被“冲淡”,对模型几乎不影响。2.batch的选择,首先决定的是下降方向,如果数据集比较小,则完全可以采用全数据集的形式。这样做的好处有两点,

1)全数据集的方向能够更好的代表样本总体,确定其极值所在。

2)由于不同权重的梯度值差别巨大,因此选取一个全局的学习率很困难。

3.增大batchsize的好处有三点:

1)内存的利用率提高了,大矩阵乘法的并行化效率提高。

2)跑完一次epoch(全数据集)所需迭代次数减少,对于相同的数据量的处理速度进一步加快。

3)一定范围内,batchsize越大,其确定的下降方向就越准,引起训练震荡越小。

4.盲目增大的坏处有三点:

1)当数据集太大时,内存撑不住。

2)跑完一次epocffe-master/tools/extra/parse_log.sh caffe-master/tools/extra/extract_seconds.py和h(全数据集)所需迭代次数减少了,但要想达到相同的 精度,时间开销太大,参数的修正更加缓慢。

3)batchsize增大到一定的程度,其确定的下降方向已经基本不再变化。

总结:

1)batch数太小,而类别又比较多的时候,真的可能会导致loss函数震荡而不收敛,尤其是在你的网络比较复杂的时候。

2)随着batchsize增大,处理相同的数据量的速度越快。

3)随着batchsize增大,达到相同精度所需要的epoch数量越来越多。

4)由于上述两种因素的矛盾, Batch_Size 增大到某个时候,达到时间上的最优。

5)由于最终收敛精度会陷入不同的局部极值,因此 Batch_Size 增大到某些时候,达到最终收敛精度上的最优。

6)过大的batchsize的结果是网络很容易收敛到一些不好的局部最优点。同样太小的batch也存在一些问题,比如训练速度很慢,训练不容易收敛等。

7)具体的batch size的选取和训练集的样本数目相关。

还有一个代码上的细节:就是代码实现上选取一个batch的时候似乎是按着数据库的图片顺序选取输入图片的,所以在生成数据库的时候切记要shuffle一下图片顺序。caffe中ImageDataLayer有shuffle参数,生成lmdb时也有shuffle参数不必手动。

显存占用不是和batch size简单成正比

增大batch size能减缓梯度震荡,需要更少的迭代优化次数,收敛的更快,但是每次迭代耗时更长。 https://zhuanlan.zhihu.com/p/31558973

要想收敛到同一个最优点,使用整个样本集时,虽然迭代次数少,但是每次迭代的时间长,耗费的总时间是大于使用少量样本多次迭代的情况的。 实际上,工程上在使用GPU训练时,跑一个样本花的时间与跑几十个样本甚至几百个样本的时间是一样的!当然得益于GPU里面超多的核,超强的并行计算能力啦。因此,在工程实际中,从收敛速度的角度来说,小批量的样本集是最优的,也就是我们所说的mini-batch。这时的batch size往往从几十到几百不等,但一般不会超过几千。

样本量少的时候会带来很大的方差,而这个大方差恰好会导致我们在梯度下降到很差的局部最优点(只是微微凸下去的最优点)和鞍点的时候不稳定,一不小心就因为一个大噪声的到来导致炸出了局部最优点。 与之相反的,当样本量很多时,方差很小,对梯度的估计要准确和稳定的多,因此反而在差劲的局部最优点和鞍点时反而容易自信的呆着不走了,从而导致神经网络收敛到很差的点上,跟出了bug一样的差劲。 batch的size设置的不能太大也不能太小,因此实际工程中最常用的就是mini-batch,一般size设置为几十或者几百。 对于二阶优化算法,减小batch换来的收敛速度提升远不如引入大量噪声导致的性能下降,因此在使用二阶优化算法时,往往要采用大batch哦。此时往往batch设置成几千甚至一两万才能发挥出最佳性能。 GPU对2的幂次的batch可以发挥更佳的性能,因此设置成16、32、64、128…时往往要比设置为整10、整100的倍数时表现更优。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/07/10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
2 条评论
热度
最新
大佬,我替换最新版的ffmpeg文件,也是没有问题吧?
大佬,我替换最新版的ffmpeg文件,也是没有问题吧?
11点赞举报
问题不大,猛尅!
问题不大,猛尅!
回复回复点赞举报
推荐阅读
m3u8格式转换器android,m3u8视频转换器[通俗易懂]
大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说m3u8格式转换器android,m3u8视频转换器[通俗易懂],希望能够帮助大家进步!!!
Java架构师必看
2022/07/12
7.2K0
m3u8格式转换器android,m3u8视频转换器[通俗易懂]
凌夕文件管理系统(lfs) - 音视频、文档在线转码服务
凌夕文件管理系统是基于SpringBoot3.x+Mybatis+Mybatis-Plus+VUE3+Element Plus开发的文件管理系统,
zcxi
2024/03/11
6600
凌夕文件管理系统(lfs) - 音视频、文档在线转码服务
ffmpeg批量实现视频转码命令行
ffmpeg实现视频转码命令行,result需要提前建好作为保存转码后的视频路径:
一棹烟波
2018/07/31
6.8K0
记一次批量查看ffmpeg抽帧后的图片(格式为H264)
当前的公司刚好做一个抽帧的项目,具体是通过抽取本地已经录制保存的TF(SD)卡里的视频文件,以每秒/帧的方式抽取,生成的图片文件格式为H264,如下图所示
用户6367961
2019/09/30
2.2K0
记一次批量查看ffmpeg抽帧后的图片(格式为H264)
讲解FFMPEG H264/H265 编码延迟问题
在视频编码中,延迟是一个常见的问题。对于实时性要求较高的应用(如视频直播、视频会议等),延迟问题尤为重要。本文将重点讲解FFmpeg中H264和H265编码器的延迟问题,以及如何优化和降低编码延迟。
大盘鸡拌面
2023/12/10
2.5K0
OpenCV保存H264视频的问题
在绝大多数的目标检测项目中,都是使用opencv这个开源的计算机视觉库来进行图片、视频或者摄像头的读写。
AI算法与图像处理
2021/09/06
6.2K0
OpenCV保存H264视频的问题
FFmpeg 视频格式转换详解:全面掌握视频格式转换的利器
视频格式转换,这听起来是不是有点无聊?嘿!其实,这是一项非常实用的技能,尤其是在如今这个人人都是“自媒体”的时代。无论是你拍摄的家庭视频,还是你从互联网上下载的视频素材,都有可能遇到各种各样的视频格式问题。你可能遇到视频太大了不能发微信、格式不对不能上传到YouTube,又或者你需要压缩视频以节省空间。今天,我就带你走进FFmpeg这个神器的世界,全面掌握如何使用它进行视频格式转换。放心,这将是一个轻松有趣的过程!
繁依Fanyi
2024/09/18
2.8K0
linux下 ffmpeg-3.1安装及视频转码
这篇是几年前整理的老文章了,当时在调研流视频推送及播放相关技术,并在项目中应用,使用到ffmpeg,所以整理了这篇文章,但并未发布。最近又有相关的技术需求,所以整理出来,作为一个新的开始。
程序员架构进阶
2021/10/21
2.2K0
如何将ts文件转为mp4格式「建议收藏」
问题描述:想要将新浪微博上的视频下载下来,打开源码发现找不到视频,通过查找,在js文件里找到视频保存的文件目录。根据该文件目录一一下载下来后缀为ts的视频文件。想要发给朋友分享,所以需要转为mp4格式。
全栈程序员站长
2022/09/09
2.5K0
H.264 媒体流 AnnexB 和 AVCC 格式分析 及 FFmpeg 解析mp4的H.264码流方法
来源:https://blog.csdn.net/shaosunrise/article/details/121548065
音视频开发进阶
2022/10/31
2.3K0
使用PHP结合Ffmpeg快速搭建流媒体服务实践
笔者想将自己收藏的一些电影放到网站上可以用来随时播放,不过遇到了一个问题,便是如果直接将MP4文件放放到网站目录当中,手机端必须下载整个视频才可以播放,而如果跨外网传输,这实在是不太现实。
汤青松
2018/10/28
2.5K0
使用PHP结合Ffmpeg快速搭建流媒体服务实践
ffmpeg常用命令
FFmpeg是一个强大的开源多媒体处理工具,它可以用于录制、转换以及流化音频和视频。它是一个跨平台的项目,可以在多种操作系统上运行,包括Windows、Mac OS和Linux。这个工具可以执行各种各样的音视频处理任务,包括但不限于:
Jensen_97
2024/04/18
4220
如何使用FFmpeg将AVI转换为MP4(有损转换和无损转换)
 点击上方“LiveVideoStack”关注我们 翻译、编辑:Alex 技术审校:刘歧 本文来自OTTVerse,作者为Krishna Rao Vijayanagar。 ▲扫描图中二维码或点击阅读原文▲ 了解音视频技术大会更多信息 FFmpeg Easy-Tech #021# 在本篇文章中,我们将学习如何使用FFmpeg把视频从AVI格式转换为MP4格式(在重新/不重新编码AVI文件的情况下)。作为红利,我们还将学习FFmpeg在Ubuntu、Mac和Windows上的安装,并使用FFmpeg将
LiveVideoStack
2022/04/18
9.1K0
如何使用FFmpeg将AVI转换为MP4(有损转换和无损转换)
无惧FFmpeg的高冷美艳:8条音视频命令,让你变身短视频UP达人!
FFmpeg是一个世界著名的命令行工具,它提供跨平台的运行环境,用于流式传输、录制音频/视频数据,并将其转换为不同的媒体格式。
程序员小助手
2020/04/08
1.4K0
FFmpeg从入门到精通-云享读书会
FFmpeg是一款开源软件,用于生成处理多媒体数据的各类库和程序。FFmpeg可以转码、处理视频和图片(调整视频、图片大小,去噪等)、打包、传输及播放视频。作为最受欢迎的视频和图像处理软件,它被来自各行各业的不同公司所广泛使用。
DS小龙哥
2022/10/06
5.4K0
FFmpeg从入门到精通-云享读书会
在Linux/Mac/Windows上配置FFmpeg开源音频工具,轻松完成视频转码、音频混合等操作 - 雨月空间站
博客:https://www.mintimate.cn 腾讯云社区:https://cloud.tencent.com/developer/user/7704194
Mintimate
2023/03/10
4.1K0
在Linux/Mac/Windows上配置FFmpeg开源音频工具,轻松完成视频转码、音频混合等操作 - 雨月空间站
视频切片并上传到GitHub
GitHub对项目大小的限制,因此请注意自己项目的大小和切片文件的大小,尽可能避免被GitHub警告。
赤月未咲
2023/03/17
1.6K0
mp4 文件中的h264 avc1格式介绍
转自:http://www.mworkbox.com/wp/work/314.html
全栈程序员站长
2022/11/03
4.6K0
使用ffmpeg将ASS字幕打进视频流中
在某些视频格式标准中(也就是容器中)是不支持字幕的,例如将mkv文件转码成为ts文件或者mp4文件后,有时候会发现字幕不翼而飞了,这对有些英语不是很好,需要看到字幕的人就不那么顺利了。不过没关系,在转码的时候,可以将字幕打入视频流中,这样就可以在播视频时,将字幕输出出来了,具体方法如下:
用户3765803
2019/03/05
2.8K0
使用ffmpeg将ASS字幕打进视频流中
如何使用FFmpeg将互联网直播点播平台内直播视频流转化为HLS流?
FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。在音视频开发过程中,经常需要使用 FFmpeg 将原先的一个单视频文件转换为多个HLS 流文件,用于视频直播和点播,当然我们视频直播点播平台EasyDSS也会使用FFmpeg作为能力程序,当需要将视频流转化为HLS 流时,我们就可以通过FFmpeg来进行转换。
EasyNVR
2020/07/23
2.1K0
如何使用FFmpeg将互联网直播点播平台内直播视频流转化为HLS流?
推荐阅读
相关推荐
m3u8格式转换器android,m3u8视频转换器[通俗易懂]
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档