caffe学习笔记19-batchsize参数
1.当数据量足够大的时候可以适当的减小batch_size,由于数据量太大,内存不够。但盲目减少会导致无法收敛,batch_size=1时为在线学习。
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的选取和训练集的样本数目相关。
还有一个代码上的细节:就是caffe的代码实现上选取一个batch的时候似乎是按着数据库的图片顺序选取输入图片的,所以在生成数据库的时候切记要shuffle一下图片顺序。caffe中ImageDataLayer有shuffle参数,生成lmdb时也有shuffle参数不必手动。
caffe学习笔记19-batchsize参数相关推荐
- Caffe 学习笔记1
Caffe 学习笔记1 本文为原创作品,未经本人同意,禁止转载,禁止用于商业用途!本人对博客使用拥有最终解释权 欢迎关注我的博客:http://blog.csdn.net/hit2015spring和 ...
- Caffe学习笔记4图像特征进行可视化
Caffe学习笔记4图像特征进行可视化 本文为原创作品,未经本人同意,禁止转载,禁止用于商业用途!本人对博客使用拥有最终解释权 欢迎关注我的博客:http://blog.csdn.net/hit201 ...
- Caffe学习笔记3——制作并训练自己的数据集
Caffe学习笔记3 本文为原创作品,未经本人同意,禁止转载,禁止用于商业用途!本人对博客使用拥有最终解释权 欢迎关注我的博客:http://blog.csdn.net/hit2015spring和h ...
- Caffe学习笔记2
Caffe学习笔记2-用一个预训练模型提取特征 本文为原创作品,未经本人同意,禁止转载,禁止用于商业用途!本人对博客使用拥有最终解释权 欢迎关注我的博客:http://blog.csdn.net/hi ...
- caffe学习笔记(2)
caffe学习笔记(2)-视觉层(vision layers) 本文参考博客caffe学习,是根据这篇博客做的学习笔记.详细情况可以参考原博客,真的很赞. 所有的层都具有的参数,如name, type ...
- caffe学习笔记(1)
caffe学习笔记(1) 刚开始学习caffe,发现一个非常好的博客caffe学习.看了几遍收益匪浅,但是总是记不住,所以决定安装该博客的步骤一点一点实现,然后记录在该系列的博客中.原博客是在ubun ...
- Caffe学习笔记2--Ubuntu 14.04 64bit 安装Caffe(GPU版本)
0.检查配置 1. VMWare上运行的Ubuntu,并不能支持真实的GPU(除了特定版本的VMWare和特定的GPU,要求条件严格,所以我在VMWare上搭建好了Caffe环境后,又重新在Windo ...
- Caffe学习笔记(二):Caffe前传与反传、损失函数、调优
Caffe学习笔记(二):Caffe前传与反传.损失函数.调优 在caffe框架中,前传/反传(forward and backward)是一个网络中最重要的计算过程:损失函数(loss)是学习的驱动 ...
- Python学习笔记19:列表 III
Python学习笔记19:列表 III 其实这篇笔记标题应该是列表扩展,从列表开始,将涵盖Python中的序列容器. 关于列表的基础知识,可以看我的前两篇文章: Python学习笔记1:列表. Pyt ...
- Linux 学习笔记19 信号
Linux 学习笔记19 信号 信号 信号概述 为什么要是使用信号--为了实现进程的有序退出 信号是进程运行过程中,由自身产生或者由进程外部发来的消息.信号是硬件中断的软件模拟(软中断) signal ...
最新文章
- mysql 左关联查询_MySQL 左关联右表条件查询
- NIO网络编程实战之简单多人聊天室
- tesseract-ocr使用以及训练方法
- Codeforces Round #596 (Div. 2)(第三场)
- 如何在Lua与C/C++之间实现table数据的交换
- AtCoder Beginner Contest 179 总结
- VLfeat win10 vs2015 编译
- C++智能指针shared_ptr使用实例
- 搭建Wpf框架(1) —— 管理系统-Wpf客户端框架2.0(OA,聊天,定时任务)
- [转]抢先Mark!微信公众平台开发进阶篇资源集锦
- shell脚本中select循环语句用法
- python求不规则图形面积_python计算不规则图形面积算法
- 【Axure】动态图表设计-柱状图、折线图、饼图(免费下载)
- QT的QScrollArea使用详解
- matlab中矩阵运算
- Bryntum Gantt 5.2.2 New-Crack
- [JS] js-xlsx生成Excel(模拟下载)
- 情报分析-diamond_threat_model
- 佛心禅语净灵台-转载
- Python下载echo歌曲
热门文章
- Boost.MultiIndex 使用随机访问索引的示例
- boost::mp11::mp_at相关用法的测试程序
- BOOST_LOG_UNIQUE_IDENTIFIER_NAME宏用法的测试程序
- boost::remove_edge用法的测试程序
- boost::geometry::transform_variant用法的测试程序
- boost::geometry模块自定义指针到点示例
- boost::format模块一些真实的、简单的测试
- GDCM:gdcm::Sorter的测试程序
- Boost:cpu时间的实例
- VTK:Math之VectorDot