如何在Keras中的多个小批量上计算和求和梯度?

我想在训练过程中增加神经网络的最小批处理大小(而不是降低学习率),但是由于我的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的示例,但它们都不涉及优化器。
希望有人能帮助我!

tanglc321 回答:如何在Keras中的多个小批量上计算和求和梯度?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3138803.html

大家都在问