【问题标题】:Set Batch Size *and* Number of Training Iterations for a neural network?为神经网络设置批量大小*和*训练迭代次数?
【发布时间】:2018-02-22 10:26:16
【问题描述】:

我正在使用 KNIME Doc2Vec 学习者节点来构建词嵌入。我知道 Doc2Vec 是如何工作的。在 KNIME 中,我可以选择设置参数

  • Batch Size:每批要使用的字数。
  • 时期数:要训练的时期数。
  • 训练迭代次数:每批完成的更新次数。

从神经网络我知道(懒惰地从https://stats.stackexchange.com/questions/153531/what-is-batch-size-in-neural-network复制):

  • 一个 epoch = 所有训练示例的一次前向传递和一次反向传递
  • batch size = 一次前向/后向传递中的训练示例数。批处理大小越大,您需要的内存空间就越多。
  • 迭代次数 = 传递次数,每次传递使用 [batch size] 示例数。需要明确的是,一次传球 = 一次向前传球 + 一次向后传球(我们不将向前传球和向后传球算作两次不同的传球)。

据我所知,设置批量大小迭代没有什么意义,因为一个由另一个决定(给定数据大小,由环境决定)。那么为什么我可以同时更改这两个参数呢?

【问题讨论】:

    标签: neural-network doc2vec knime


    【解决方案1】:

    情况不一定如此。您还可以训练“半个纪元”。例如,在 Google 的 inceptionV3 预训练脚本中,您通常同时设置迭代次数batch size。这可能会导致“部分时期”,这很好。

    训练半个 epoch 是否是个好主意可能取决于您的数据。对此有一个thread,但不是一个结论性的答案。

    我不熟悉 KNIME Doc2Vec,所以我不确定那里的含义是否有所不同。但是根据您给出的定义,设置批量大小+迭代似乎很好。此外,设置 epoch 的数量可能会导致冲突,尽管会导致数字加起来无法合理组合的情况。

    【讨论】:

    • 我不明白E 的纪元数与此有什么关系。假设我有N=1000 训练样本。然后一个时期是我对这 1000 个样本进行训练的频率。假设有I=5 迭代,那么我的批量大小是B = N/I = 200 - 不涉及E。或者,我可以将批量大小固定为 120 并拥有I = N/B = 8.3,因此我有 8 个完整的迭代,有 120 个样本,迭代有 40 个样本。仍然没有涉及E。现在我设置了I=5B=100 - 这无法调和,导致我原来的问题。
    • 您能否提供有关您正在使用的 NN 的任何代码或更多信息?没有它就不可能说出为什么以及如何准确地使用这些参数。
    • KNIME 依赖于 DL4J 的实现:deeplearning4j.org/doc2vec。也可以查看deeplearning4j.org/word2vec,比较相似。
    猜你喜欢
    • 2012-03-15
    • 2021-02-11
    • 2021-02-06
    • 1970-01-01
    • 2018-01-07
    • 1970-01-01
    • 1970-01-01
    • 2018-08-09
    • 2011-04-07
    相关资源
    最近更新 更多