【问题标题】:TensorFlow: nr. of epochs vs. nr. of training stepsTensorFlow:天然橡胶。时代与天然橡胶。训练步骤
【发布时间】:2017-09-05 07:02:04
【问题描述】:

我最近尝试使用 Google 的 seq2seq 建立一个小型 NMT 系统。我设法让一切正常工作,但我仍然想知道模型的 epoch 数和训练步骤数之间的确切差异。

如果我没记错的话,一个 epoch 由多个训练步骤组成,并且一旦您的整个训练数据被处理一次,就已经过去了。但是,当我查看 Google 自己的 tutorial on NMT 中的文档时,我不明白两者之间的区别。请注意以下 sn-p 的最后一行。

export DATA_PATH=

export VOCAB_SOURCE=${DATA_PATH}/vocab.bpe.32000
export VOCAB_TARGET=${DATA_PATH}/vocab.bpe.32000
export TRAIN_SOURCES=${DATA_PATH}/train.tok.clean.bpe.32000.en
export TRAIN_TARGETS=${DATA_PATH}/train.tok.clean.bpe.32000.de
export DEV_SOURCES=${DATA_PATH}/newstest2013.tok.bpe.32000.en
export DEV_TARGETS=${DATA_PATH}/newstest2013.tok.bpe.32000.de

export DEV_TARGETS_REF=${DATA_PATH}/newstest2013.tok.de
export TRAIN_STEPS=1000000

在我看来,似乎只有一种方法可以定义训练步骤的数量,而不是模型的 epoch 数量。是否可能存在术语重叠,因此没有必要定义多个时期?

【问题讨论】:

  • 您回答了自己的问题。链接教程中的哪些内容与您所说的相矛盾?我们不会阅读所有内容。
  • 它只允许你导出某个nr。训练步骤,所以我想知道是否仍然需要指定一个 nr。时代也是如此。
  • 一个时期是固定数量的步骤,因此定义一个定义另一个。
  • 所以,为了确定我明白了:如果您的训练数据包含 200.000 个句子,并且您设置了 1.000.000 个训练步骤,那么您最终将获得相当于 5 个 epoch 的结果?

标签: tensorflow neural-network machine-translation sequence-to-sequence


【解决方案1】:

一个 epoch 包括一次遍历所有训练样本。一步/迭代是指在单个小批量上进行训练。因此,如果您有 1,000,000 个训练样本并使用 100 的批量大小,则一个 epoch 将相当于 10,000 步,每步 100 个样本。

高级神经网络框架可以让您设置 epoch 数或训练步骤总数。但是你不能同时设置它们,因为一个直接决定另一个的值。

【讨论】:

  • 第二段不对。 Number_of_steps_per_epoch 没有定义 number_of_epochs,反之亦然。但是,Number_of_steps_per_epoch 定义了 batch_size,反之亦然...
  • @Nejla 问题不在于每个时期的步数。它是关于 total 步数和 epoch 总数之间的关系。当批量大小和训练样本数量固定时,其中一个决定另一个。
  • 嗯,这就是你在回答中提到的!无论如何,我建议您将 total 添加到您的答案中,因为它具有误导性......
  • 这是您的句子吗:“因此,如果您有 1,000,000 个训练样本并使用 100 的批量大小,则一个 epoch 将相当于 10,000 步,每步 100 个样本”。然后它不是谈论的。这是一个关于一个时代。所以,伙计,只需添加总量并消除混淆。您在第一段中谈论一个时代,然后您的第二段指的是总数……这在您的脑海中很清楚。但是,不是读者……
  • @Nejla 如果一个 epoch 相当于该示例中的 10000 步,则 N epoch 相当于 10000N 总步数。基本数学。 span>
猜你喜欢
  • 1970-01-01
  • 2014-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多