SSD(Single Shot MultiBox Detector)的solver参数 test_initialization的说明塈解决训练时一直停在Iteration 0的问题

前阵子训练过一次SSD模型,训练后发现数据集有问题,修改了数据集后,今天准备再做一次SSD训练时,如下执行训练代码:

python ./examples/ssd/ssd_pascal.py 

到了开始迭代时,一直停在Iteration 0,进行不下去。。。

对于还不完全熟悉SSD代码结构的我来说,遇到这个问题当时脑子一下子就懵了,一时不知是哪里出了问题。因为我之前已经成功做过一次训练,此次训练只是训练数据集不一样,并没对训练参数和模型做任何修改,怎么就不对了呢?

最后想到我在第一次训练的时候,修改过solver参数中的test_initialization的值(定义在$ssd_root/examples/ssd/ssd_pascal.py line 388),会不会是它的问题呢? 于是尝试将之修改为默认值False,再开始训练,则一切正常。

原因分析

我们知道,训练过程一般都比较漫长,所以caffe在设计的时候允许中断训练,当Ctrl-c中断训练时,Caffe会自动保存一份训练快照。 如下图,会在$ssd_root/models对应模型文件夹下生成代表当前完成的迭代次数的快照文件,后缀为_32和_47的文件分别代表32次和47次迭代时的快照

solver参数中的test_initialization表示是否可以用上次保存的snapshot来继续训练,如果为True,则下次开始训练的时候,caffe会自动从这个目录下加载最近一次迭代的模型,继续训练,以节省时间。 如果是False,则会从0开始重新迭代。所以这个参数的默认值是False。 我在第一次训练的时候,将这个参数改为了True。 这样听起来没啥问题,但如果你重新开始训练的时候,$ssd_root/models对应模型的文件夹下并没有任何快照,如test_initialization被设置为True,因为caffe找不到快照文件,就会导致迭代一直停留在Iteration 0。所以这种情况下应该把test_initialization置为False,训练就能正常进行下去了。 根据这个现象,我觉得这应该是训练代码的一个bug,代码的健壮性有问题,但因为对Caffe代码结构还不熟悉,所以我是没办法修改它,期待官方版本改进。

参考资料

《Caffe代码解读(四):solver_param》

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java Edge

鸢尾花数据集实验安装 scikit-learn

30610
来自专栏fangyangcoder

tensorflow笔记(三)之 tensorboard的使用

http://www.cnblogs.com/fydeblog/p/7429344.html

825
来自专栏ATYUN订阅号

人工智能为什么能做的事情这么多?密码猜测在它面前也能行得通

密码猜测之所以有效是因为… 人类是可预测的 ? 如果你要求小明设置一个密码。他可能只是简单地把密码设置为“xiaoming”。现在,系统告诉他密码必须包含数字...

3256
来自专栏AI研习社

一个应用于物体识别的迁移学习工具链

迁移学习指的是,通过对预训练模型的参数进行微调,将训练好的模型应用到相似或者只有细微差异的不同任务中。通过这个方法,我们可以基于一些性能顶尖的深度学习模型得到别...

782
来自专栏生信技能树

如何选择聚类模块数目

一般来说,类似K-means聚类算法需要我们提取指定聚类得到的cluster数目。 那么问题来了,如何为聚类选择一个适合的cluster数目呢 ? 很遗憾,上面...

56410
来自专栏人工智能

用Tensorflow搭建神经网络14:检查点训练机制

由于大型神经网络的训练往往耗费很长的时间,可能会因为机器损坏、断电或系统崩溃等各种因素无法一次性完成模型训练而导致前面所有的训练功亏一篑。本次来介绍一种检查点机...

26910
来自专栏kangvcar

[face_recognition中文文档] 第1节 人脸识别

1922
来自专栏ATYUN订阅号

Machine Box创始人教你快速建立一个ML图像分类器

AiTechYun 编辑:Yining Machine Box的创始人Mat Ryer在medium上分享了一篇博文,意在教你在硬盘上快速的建立一个机器学习图像...

3306
来自专栏IT派

酷!3行Python代码完成人脸识别

Face Recognition软件包 这是世界上最简单的人脸识别库了。你可以通过Python引用或者命令行的形式使用它,来管理和识别人脸。 该软件包使用d...

42410
来自专栏北京马哥教育

3行Python代码完成人脸识别

Face Recognition软件包 这是世界上最简单的人脸识别库了。你可以通过Python引用或者命令行的形式使用它,来管理和识别人脸。 该软件包使用dli...

4077

扫码关注云+社区