Deep learning 如何确定测试批量以充分利用NVIDIA Titan X

Deep learning 如何确定测试批量以充分利用NVIDIA Titan X,deep-learning,nvidia,nvidia-titan,Deep Learning,Nvidia,Nvidia Titan,在训练深度学习模型时,我发现如果我将训练和验证(测试)批量大小设置为相同,例如32、64、…、512,GPU就没有得到充分利用 然后我检查NVIDIA Titan X规格: NVIDIA CUDA®核心:3584 内存:12 GB GDDR5X 为了减少CNN模型的测试时间,我希望尽可能多地增加一批样本的数量。我试过: 将每批样品数设置为3584,cuda超出内存错误 将每批样本数设置为2048,cuda超出内存错误 将每个批次的样本数设置为1024,有效。但我不确定GPU是否得到充分利用

在训练深度学习模型时,我发现如果我将训练和验证(测试)批量大小设置为相同,例如32、64、…、512,GPU就没有得到充分利用

然后我检查NVIDIA Titan X规格:

  • NVIDIA CUDA®核心:3584
  • 内存:12 GB GDDR5X
  • 为了减少CNN模型的测试时间,我希望尽可能多地增加一批样本的数量。我试过:

    • 将每批样品数设置为3584,cuda超出内存错误
    • 将每批样本数设置为2048,cuda超出内存错误
    • 将每个批次的样本数设置为1024,有效。但我不确定GPU是否得到充分利用
    问题:


    如何轻松选择每批样本的数量以充分利用GPU进行深度模型正向操作?

    使用
    查看nvidia smi
    检查进程使用的GPU内存量

    供参考:

    • :
    来自Nitish Shirish Keskar、Dheevatsa Mudigere、Jorge Nocedal、Mikhail 史密安斯基、平德、邓彼得。论深加工大批量培训 学习:概括差距和尖锐的极小值。 :

    随机梯度下降法及其变体是许多深度学习任务的首选算法。这些方法 在小批量情况下运行,其中培训的一部分 通常为32-512个数据点的数据被采样以计算 梯度的近似值实践中观察到 当使用更大的批次时,产品的性能会显著下降 通过概括能力衡量的模型质量。 已经有人试图调查造成这种情况的原因 在大批量情况下,泛化率下降,但精确的 迄今为止,这一现象的答案是未知的。在本文中,我们 提供充分的数字证据,支持以下观点: 大批量方法倾向于收敛到问题的尖锐极小值 培训和测试功能——这一尖锐的极小值会导致更差的性能 一般化相反,小批量方法始终收敛 我们的实验支持一个普遍持有的观点 这是由于梯度估计中的固有噪声造成的。我们 还讨论了一些有助于大批量生产的经验策略 方法消除泛化差距,并以一组 未来的研究思路和开放性问题

    [……]

    缺乏泛化能力的原因是,大批量方法往往会收敛到问题的尖锐极小值 培训功能。这些极小化子的特点是大 $\nabla^2 f(x)$中的正特征值,且一般化程度较低 好。相反,小批量方法收敛于平坦极小值 以$\nabla^2 f(x)$的小正特征值为特征。我们 已经观察到深层神经网络的损失函数景观 因此,大批量方法几乎总是被吸引 与小批量方法不同,具有尖锐极小值的区域 无法逃离这些极小值的水池

    [……]


    我也在使用theano,您的解决方案是什么?如何配置theano,使其在GPU内存分配失败时不会直接崩溃@user2262504还没有解决方案。