【PyTorch】安物GPUだけどバッチサイズ大きくしたい
諸事情によりバッチサイズを大きく取らないといけなくなったのですが、そんな時はoptimizerのstep等のタイミングを変更することで同等のことができそうです。 例えば下記の疑似コードでバッチサイズ16, accumulation=2であればバッチサイズ32で実行しているかのようになります。
optimizer.zero_grad() for i, (data, target) in enumerate(data_loader): output = model(data) loss = criterion(output, target) loss.backward() # accumulation分蓄積するまでstepしない if (i+1)%accumulation == 0: optimizer.step() optimizer.zero_grad()