Tensorflow 数据管道中的批大小和midel.fit()中的批大小有什么区别?

Tensorflow 数据管道中的批大小和midel.fit()中的批大小有什么区别?,tensorflow,machine-learning,neural-network,data-science,batchsize,Tensorflow,Machine Learning,Neural Network,Data Science,Batchsize,这两个是相同的批量大小,还是有不同的含义 BATCH_SIZE=10 dataset = tf.data.Dataset.from_tensor_slices((filenames, labels)) dataset = dataset.batch(BATCH_SIZE) 第二 我的内存出问题了。。。 培训图像示例333000 Ram 30GB 12 GB GPU 这个的批量大小应该是多少 数据集(批量大小) 批量大小仅表示将有多少数据通过您定义的管道。对于日期集,批处理大小表示在一次迭代中将

这两个是相同的批量大小,还是有不同的含义

BATCH_SIZE=10
dataset = tf.data.Dataset.from_tensor_slices((filenames, labels))
dataset = dataset.batch(BATCH_SIZE)
第二

我的内存出问题了。。。 培训图像示例333000 Ram 30GB 12 GB GPU 这个的批量大小应该是多少

数据集(批量大小)

批量大小仅表示将有多少数据通过您定义的管道。对于日期集,批处理大小表示在一次迭代中将有多少数据传递给模型。例如,如果您形成一个数据生成器并将批量大小设置为8。现在,在每个迭代数据生成器上提供8条数据记录

Model.fit(批量大小)

在model.fit中,当我们设置批量大小时,这意味着模型将在传递与批量大小相等的数据记录后计算损失。如果您了解深度学习模型,他们会计算前馈的特定损失,而不是通过反向传播来改进自己。现在,如果您在model.fit中设置批次大小8,则8条数据记录将传递给模型,并计算这8条数据记录的损失,然后模型将从该损失中改进

示例:

现在,如果将dateset批处理大小设置为4,并将model.fit批处理大小设置为8。现在,您的数据集生成器必须迭代2次才能为model和model.fit提供8个图像。只需执行1次迭代即可计算损失

Ram问题


你的图像大小是多少?尽量减少批处理单元的大小,因为每个阶段的步长与ram无关,但批处理单元的大小与ram无关。因为如果你给10个批量大小,那么10个图像必须加载到ram上进行处理,而ram不能同时加载10个图像。试着给批量大小4或2。这可能会帮助您

第一个示例创建一个生成器,它一次生成10个文件名。您可以在
model.fit
方法中将其与生成器函数一起使用。第二个示例还应创建一批10幅图像,并按顺序在每个批次上训练模型。可能是您的验证数据太大。@TirthPatel都需要提供我知道训练集和验证集都可以传递给keras model的
fit
方法,但您可以使用自定义生成器函数对其进行自定义。我想说的是,您是否尝试查看验证数据并查看其大小。您还可以在keras中批处理验证数据@是的!验证数据集很大。我将验证数据集限制为300,但仍然填充整个ram,我将添加有问题的git repo链接,您可以检查。很好,我理解,但实际上我面临ram无法运行的问题。。所以我也尝试了每个历元参数的步数。。。每个历元的步长=总步长/批量步长每个历元的步长=50000/10个步长每个历元的步长=5000仍然过多,无法装入ram?这里我只从文件中读取50000条记录。根据您的回答,我们需要给出两个位置的批大小?您的图像大小是多少?尽量减少批处理单元的大小,因为每个阶段的步长与ram无关,但批处理单元的大小与ram无关。因为如果你给10个批量大小,那么10个图像必须加载到ram上进行处理,而ram不能同时加载10个图像。试着给批量大小4或2。图像大小(240240,3)12 gb的ram无法加载10个输入图像(240240,3)。将批量大小减少到4。
history = model.fit(train_ds,
  epochs=EPOCHS,                    
  validation_data=create_dataset(X_valid, y_valid_bin),
  max_queue_size=1,
  workers=1,
  batch_size=10,
  use_multiprocessing=False)