【发布时间】:2018-02-07 04:19:10
【问题描述】:
我在 Python 中使用带有 Tensorflow 后端的 Keras。更准确地说是 tensorflow 1.2.1 及其内置的 contrib.keras 库。
我想使用 Sequential 模型对象的 fit_generator 方法,但我对应该作为方法参数传递的内容感到困惑。
通过阅读文档here,我得到了以下信息:
- generator :python 训练数据批量生成器;无休止地循环其训练数据
- validation_data:-在我的情况下 - python 验证数据批处理生成器;该文档没有提到对其验证数据进行无限循环
-
steps_per_epoch:
number of training batches = uniqueTrainingData / batchSize -
验证步骤:
???; = uniqueValidationData / 批量大小??? - use_multiprocessing:布尔值;不要传递不可腌制的参数???
- workers : 最大使用进程数
如上所示 ???我真的不知道 validation_steps 是什么意思。
我知道上述链接文档 (Number of steps to yield from validation generator at the end of every epoch) 的定义,但这只会让我在给定的上下文中感到困惑。从文档中我知道validation_data 生成器必须产生数据,以(inputs, targets) 的形式标记元组。与此相反,上述声明表明必须有多个“在每个 epoch 结束时从验证生成器产生的步骤”,在这种情况下,这意味着在每个训练 epoch 之后将产生多个验证批次。
关于validation_steps的问题:
- 真的如此吗?如果是这样:为什么?我认为在每个 epoch 之后,一个验证批次(理想情况下以前没有使用过)用于验证,以确保训练得到验证,而不会冒“训练”模型以在已使用的验证集上表现更好的风险。
- 在上一个问题的上下文中:为什么推荐的验证步骤数量是
uniqueValidationData / batches而不是uniqueValidationData / epochs?拥有例如不是更好吗? 100 个验证批次用于 100 个 epoch,而不是 x 个验证批次,其中 x 可能小于或大于指定的 epoch 数?或者:如果您的验证批次比 epoch 的数量少得多,那么模型是在没有对其余 epoch 进行验证的情况下训练的,还是验证集被重用/重新洗牌+重用? - 训练和验证批次具有相同的批次大小是否重要(除数 trainingDataCount 和 validationDataCount 的共享除数)?
关于use_multiprocessing的其他问题:
- numpy 数组是否可以选择,还是我必须将它们转换为多维列表?
【问题讨论】:
标签: parameters keras generator data-fitting