TensorFlow:nr。时代与天然橡胶。训练步骤

TensorFlow: nr. of epochs vs. nr. of training steps

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

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

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

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

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

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