python - 培训、验证、测试批量比例
问题描述
我在 Tensorflow 上使用 Inception 进行迁移学习,这是我遵循的训练代码:https ://raw.githubusercontent.com/tensorflow/hub/master/examples/image_retraining/retrain.py
在代码的底部,我们可以根据我们的数据集指定参数。(有training, val, test percent和training, val, test batch size)
假设我有一个非常大的数据集(1 百万)并且我已经将其设置training, validation, testing percentage
为75:15:10。
但我不知道如何正确设置批处理参数:
- train_batch_size
- 验证批次大小
- test_batch_size
现在,我将 设置train_batch_size
为 64,是否需要为 设置相同的值validation_batch_size
?或者它应该大于还是小于train_batch_size
?
解决方案
您可以按照其他答案中关于数据集拆分率的建议进行操作。但是,批量大小与您拆分数据集的方式完全无关。
批量大小决定了并行处理多少训练示例以进行训练/推理。训练时的批量大小会影响训练收敛的速度和效果。您可以在此处找到有关此效果的讨论。因此,对于train_batch_size
,值得选择一个既不太小也不太大的批量大小(如先前链接的讨论中所讨论的)。对于某些应用程序,使用尽可能大的训练批次实际上是可取的,但通常,您可以通过实验和验证来选择它。
但是,对于validation_batch_size
和test_batch_size
,您应该选择硬件可以处理的最大批量大小,而不会耗尽内存和崩溃。找到这通常是一个简单的试错过程。推理时的批大小越大,速度就越快,因为可以并行处理更多的输入。
编辑:这是Goodfellow 等人的深度学习书中关于训练批量大小权衡的额外有用链接(第 276 页)。
推荐阅读
- python - 如何在 ScrolledText tkinter 中打印函数输出?
- python - GUI-Tkinter-Python 程序
- mysql - MySQL:如何将名称连接为树(父子类别)
- javascript - 如何使用 Cypress IO 捕获来自 Twilio 的短信?
- php - 使用 PHP 的 json 数据看起来像损坏了
- javascript - Highcharts oncahnge 事件它在第一次尝试时有效,但在第二次尝试时无效
- javascript - Javascript---我有一个 api 响应,它应该在其他任何东西加载或在浏览器中呈现之前出现
- c# - C#:将 3 个变量转换为 24 小时格式
- django - “任务”类没有“对象”成员
- c++ - 如何正确清空字符串流缓冲区?