什么是时代以及如何与steps和batch_size相关?

时间:2017-07-10 12:48:45

标签: python tensorflow

我已经通过其他解决方案查看了类似的问题但没有给出完整的解释。根据我的理解,这个时代是一个测试回合,其中以'm'batch_size划分的测试集在'n'步骤之下。在这种情况下,没有时期将是大小(数据集)/ m。

好的,但是如果batch_size等于大小(数据集),那么如何确定epoch的数量。我在通过documentation时遇到了类似的问题。

awk -F\> '$0 ~ /"Domain"/ || $0 ~ /"Name"/ || $0 ~ /"Rights"/ { split($2,slts,"<");if ( $0 ~ /"Rights"/ ) { printf "%s\n",slts[1] } else { printf "%s;",slts[1] } } ' filename

这里batch_size等于大小(数据集)。 那么这些术语背后的真正相关是什么。请用明确定义的例子进行解释..

1 个答案:

答案 0 :(得分:0)

通常,这些术语被解释为:

纪元:对您的数据集进行完整传递。在评估案例中,通常您将通过您的测试集一次(因此,一个时期)。然而,在训练中,通常在同一数据集上多次训练估计量(因此具有大于1的多个历元)。

批次(有时也称为 minibatch ):一组处理过的样本,其结果权重更新在应用于随机渐变的学习步骤之前进行平均下降优化方法。

步骤:算法的一个步骤,用于处理一批数据。

数字

的示例

假设您的数据集中有 300个样本。 在训练估算器时,您必须确定批量大小。学习算法平均来自批次中每个示例的权重更新,并且每个批次只需一步使用权重更新的(折扣)平均值更新权重(因此步骤的定义以上)。 通常在大型网络(我使用Inception模型)的情况下,建议采用与您正在训练的设备的内存相匹配的批量大小,但您肯定应该尝试不同的批量大小并找到什么最适合你。

我们假设在我们的示例中,我们选择批量大小为30 。这意味着我们将以 300/30 =每个时期10个步骤覆盖整个数据集。经过10个步骤,我们将完成一个时代。我们是否应该继续执行步骤11-20,这将是第二个时代,我们将再次浏览数据集。

- 注意:如果批量大小没有完全划分您的数据集大小,您有两种可能性:要么跳过最后一个样本并且只考虑完整批次,要么允许最后一批比其他人小。 Tensorflow有处理这两种情况的方法(虽然据我所知,它只考虑完整的纪元)。