private CumGrad _cumulate_gradient(NDArray grad, int index) { var cgrad = _get_cum_gradient(index); NDArray cum_grad = null; var num_cums = 0; if (cgrad != null) { num_cums = cgrad.Nums; if (num_cums > 0) { cum_grad = cgrad.Grad + grad; num_cums++; } else { cum_grad = grad; num_cums = InitUpdates + 1; } } else { cum_grad = grad; num_cums = InitUpdates + 1; } cgrad = new CumGrad(num_cums, cum_grad); _put_cum_gradient(index, cgrad); return(cgrad); }
private void _put_cum_gradient(int index, CumGrad cgrad) { CumGrads[index] = cgrad; }