Dom*_*iek 10 computer-vision deep-learning tensorflow imagenet
我一直在使用单GPU(GeForce GTX 980 Ti,6GB)的普通机器上训练Inception V3.最大批量大小似乎在附近40.
我用在指定的默认学习速率设置inception_train.py文件:initial_learning_rate = 0.1,num_epochs_per_decay = 30和learning_rate_decay_factor = 0.16.经过几周的培训,我能够达到的最佳准确度如下(约500K-1M次迭代):
2016-06-06 12:07:52.245005: precision @ 1 = 0.5767 recall @ 5 = 0.8143 [50016 examples]
2016-06-09 22:35:10.118852: precision @ 1 = 0.5957 recall @ 5 = 0.8294 [50016 examples]
2016-06-14 15:30:59.532629: precision @ 1 = 0.6112 recall @ 5 = 0.8396 [50016 examples]
2016-06-20 13:57:14.025797: precision @ 1 = 0.6136 recall @ 5 = 0.8423 [50016 examples]
Run Code Online (Sandbox Code Playgroud)
我已经尝试在训练课程结束时摆弄设置,但是在准确性方面没有看到任何改进.
我已经从头开始了一个新的训练课程,基于这个论坛中的其他一些帖子,num_epochs_per_decay= 10和learning_rate_decay_factor= 0.001,但这里有点在黑暗中抓住.
有关像我这样的小型硬件设置的良好默认值的任何建议吗?
小智 20
TL,DR:没有已知的方法可以从适当的硬件设置中在可容忍的时间内从头开始训练Inception V3模型.我强烈建议在预期的任务上重新训练一个预先训练过的模型.
在像您这样的小型硬件上,很难获得最佳性能.一般来说,对于CNN来说,最好的性能是可能的最大批量.这意味着对于CNN,训练过程通常受限于可以适合GPU内存的最大批量大小.
可在此处下载的Inception V3模型经过50个GPU的有效批量处理1600训练 - 其中每个GPU的批量大小为32.
鉴于您的硬件适中,我的第一个建议是从上面的链接下载预训练模式,并重新训练您手头的单个任务的模型.这会让你的生活更幸福.
作为一个思想实验(但几乎不实用)..如果你觉得特别强迫通过训练从头开始训练模型完全匹配模型的训练性能,你可以在你的1 GPU上做下面的疯狂程序.也就是说,您可以运行以下过程:
我只是提到这一点,让你从概念上了解为达到完全相同的性能需要完成的工作.鉴于您提到的速度数字,此过程将需要数月才能运行.很难实用.
更现实的是,如果您仍然对从头开始训练并尽力做到最好,那么这里有一些一般性指导原则:
请再次注意,这些是一般指导原则,其他人甚至可能提供不同的建议.我们无法为您提供更具体的指导的原因是,这种规模的CNN通常不会在适度的硬件设置上从头开始接受培训.
| 归档时间: |
|
| 查看次数: |
5461 次 |
| 最近记录: |