首页 > 解决方案 > 张量流中的最后一批不完整

问题描述

我很新,找不到这个问题的直接答案。我想知道 tensorflow 2.0 用于处理训练中最后一批不完整的默认策略是什么(例如,1023 个批量大小为 100 的总训练集中的 23 个样本)。

我很好奇,因为直观地说,如果相同的 23 个样本总是被放置在每个时期的最后一批中,那么与其他 1000 个样本相比,这 23 个样本将对梯度下降产生不成比例的影响(即每个 1/23)(即每个 1/100)。我想知道 tf 的内部工作是否会在每个时期自动对样本进行洗牌。

非常感谢您的帮助!

标签: pythontensorflow2.0

解决方案


关于你的问题有两点:

  1. tf.keras.model.fit()有一个关键字参数 (kwarg) shuffle。它默认为True. 您可以在https://www.tensorflow.org/api_docs/python/tf/keras/Model?version=stable#fit查看文档。示例的改组发生在每个 epoch的开始。因此,在每个训练时期,最后一批中的样本是随机的。在这方面,没有任何例子受到特殊待遇或不当影响。
  2. fit()方法的损失和度量计算机制在内部考虑了批量大小。该方法输出的最终损失和度量值是批次之间的加权平均值,批次大小是权重。

推荐阅读