0

在此处输入图像描述我处理图像分割问题,其中存在 tensorflow 数据集格式的数据管道,并且也使用 tensorflow 迭代器。现在我将训练图像的数量从之前的 250 张增加到 500 张。我有一个单独的图像增强管道。我的问题是

  1. 即使我使用相同的图像,是否会因为图像数量的增加而产生影响batch_size=16?我已将 step_per_epoch 设置为 240。正如我从 Tensorboard 中每个时期的日志文件中看到的那样,网络为每个步骤仅输入 16 个图像并且重复相同的批次并且图像在单个时期的运行期间不会改变?那么这是否意味着它在所有 240 个步骤中只训练一批相同的 16 张图像?

  2. 我希望在每个时期均值(例如 16*30)中将所有样本数量输入网络。对于每个时期,所有样本都应该以一定的批次大小输入网络?这怎么可能?

我附上了用于训练的张量板图像。我有 250 步,所以每一步图像都应该改变,但它不会?步数很少变化,图像也是如此。为什么?

4

1 回答 1

0

如果没有看到您的代码,很难知道发生了什么。通常,如果您将批量大小设置为 16,步数设置为 240,那么在单个 epoch 中将处理 16 X 240 = 3840 个图像。如果您有 500 张图像,那么您将完成 7 次完整的数据集以及额外的 340 张图像。根据您构建输入管道的方式,情况可能并非如此。通常,您希望每个 epoch 大致检查一次训练数据,因此我会将每个 epoch 的步数设置为 (500//16)+1 =32。如果您想在每个 epoch 中准确地检查一次数据,您可以使用下面的代码来查找每个 epoch 的批大小和步数。下面的代码对于确定验证数据的批量大小和步骤很有用,因为在这种情况下,最好每个 epoch 只检查一次验证数据。

length=500 # set this to the number of training images
b_max= 50 # maximum batch size you will allow based on memory capacity
batch_size=sorted([int(length/n) for n in range(1,length+1) if length % n ==0 and length/n<=b_max],reverse=True)[0]  
steps=int(length/batch_size)
于 2020-11-11T15:43:19.583 回答