这两个批次大小是相同的,还是有不同的含义?
BATCH_SIZE=10dataset = tf.data.Dataset.from_tensor_slices((filenames, labels))dataset = dataset.batch(BATCH_SIZE)
第二段
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)
我遇到了内存不足的问题…训练图像样本有333000张,内存30GB,GPU 12GB。对于这种情况,批次大小应该设为多少?
回答:
数据集(批次大小)
批次大小仅表示通过您定义的管道传输的数据量。在数据集的情况下,批次大小表示在一次迭代中传递给模型的数据量。例如,如果您创建了一个数据生成器并设置批次大小为8,那么在每次迭代中,数据生成器会提供8条数据记录。
model.fit(批次大小)
在model.fit中设置批次大小时,意味着模型会在传递的数据记录达到批次大小后计算损失。如果您了解深度学习模型,它们会在前向传播中计算特定的损失,然后通过反向传播来改进自己。现在,如果您在model.fit中设置批次大小为8,那么8条数据记录会被传递给模型,模型会计算这8条数据记录的损失,然后从中改进。
示例:
如果您将数据集的批次大小设置为4,并将model.fit的批次大小设置为8,那么您的数据集生成器需要迭代2次才能提供8张图像给模型,而model.fit只需执行1次迭代来计算损失。
内存问题
您的图像大小是多少?尝试减小批次大小,因为每轮的步数与内存无关,但批次大小与内存有关。因为如果您设置批次大小为10,那么10张图像必须同时加载到内存中进行处理,而您的内存可能无法同时加载10张图像。尝试将批次大小设置为4或2,这可能会有所帮助。