我想在训练过程中增加神经网络的最小批处理大小(而不是降低学习率),但是由于我的GPU内存,最小批处理大小的上限为8。
我找到了这篇文章
https://medium.com/@davidlmorton/increasing-mini-batch-size-without-increasing-memory-6794e10db672
如何在不增加内存的情况下增加最小批处理大小,这是通过在PyTorch中实现DataLoader来实现的。
技术很简单,您只需计算并求和梯度即可 多个迷你批次。仅在指定数量的迷你批次之后 您会更新模型参数吗?
count = 0
for inputs,targets in training_data_loader:
if count == 0:
optimizer.step()
optimizer.zero_grad()
count = batch_multiplier
outputs = model(inputs)
loss = loss_function(outputs,targets) / batch_multiplier
loss.backward()
count -= 1
但是我在Keras中找不到任何示例。我认为必须使用 __ getitem __ 函数中的 data_generator(Sequence)完成吗?
但是我不知道如何实现它,或者甚至在Keras中也不可能实现。我也尝试查看DataGenerators的示例,但它们都不涉及优化器。
希望有人能帮助我!