Tensorflow数据集-批量大小和每个历元的步数

Tensorflow数据集-批量大小和每个历元的步数,tensorflow,tensorflow-datasets,training-data,batchsize,Tensorflow,Tensorflow Datasets,Training Data,Batchsize,我研究了一个图像分割问题,其中有一个tensorflow数据集格式的数据管道,并使用tensorflow迭代器。 现在我已经将训练图像的数量从以前的250张增加到500张。我有一个单独的图像增强管道。我的问题是 如果我使用相同的批处理大小=16,是否会因为图像数量的增加而产生影响?我已经设定了一个240步的时代。正如我从Tensorboard中每个历元的日志文件中看到的,网络在每个步骤中只输入16个图像,并且重复同一批,并且图像在单个历元运行期间不会改变?那么,这是否意味着它在240个步骤中只训

我研究了一个图像分割问题,其中有一个tensorflow数据集格式的数据管道,并使用tensorflow迭代器。 现在我已经将训练图像的数量从以前的250张增加到500张。我有一个单独的图像增强管道。我的问题是

  • 如果我使用相同的
    批处理大小=16
    ,是否会因为图像数量的增加而产生影响?我已经设定了一个240步的时代。正如我从Tensorboard中每个历元的日志文件中看到的,网络在每个步骤中只输入16个图像,并且重复同一批,并且图像在单个历元运行期间不会改变?那么,这是否意味着它在240个步骤中只训练一批相同的16幅图像呢

  • 我希望每个历元的所有样本数量都能输入到网络中(例如16*30)。每个历元的所有样本都应该以一定的批量输入到网络中?这怎么可能


  • 我已经附上了用于训练的张力板图像。我有250个步骤,所以每一步图像都应该改变,但它没有改变?步骤编号很少改变,因此图像也很少改变。为什么?

    如果没有看到您的代码,很难判断发生了什么。通常,如果将批量大小设置为16,步骤设置为240,则在单个历元中,将处理16 X 240=3840个图像。如果您有500张图像,那么您需要对完整的数据集进行7次检查,再加上340张图像。根据您构建输入管线的方式,情况可能并非如此。一般来说,每个历元大概需要检查一次训练数据,因此我将每个历元的步长设置为(500//16)+1=32。如果您想在每个历元中精确地遍历数据一次,您可以使用下面的代码来查找每个历元的批大小和步骤。下面的代码对于确定批大小和验证数据的步骤很有用,因为在这种情况下,最好每个历元只检查一次验证数据

    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)
    
    length=500#将其设置为训练图像的数量
    b_max=50#根据内存容量允许的最大批量大小
    
    批次大小=已排序([int(长度/n)表示范围(1,长度+1)中的n)如果长度%n==0,并且处理了长度/nif 3840图像,那么这对我来说没有问题。但是当我检查tensorboard时,每个历元只处理相同的16个图像集。我的意思是在所有240个步骤中处理相同的16个图像。我知道tensorflow.dataset的情况,但我想在每个历元的整个数据集上传递它通过所有图像。需要查看您的代码。整个管道非常庞大,可以发布到这里。因为tensorflow数据集没有透明度。我在训练期间看不到它。我在tensorboard中看到了图像训练,同一组16幅图像在tensorboard中的每一步在一个纪元内都不会改变。我已附上tenso的图像rboard培训数据仅在我可以可视化的地方