public void CheckGradientExhaustive(Layer <T> layer, BlobCollection <T> colBottom, BlobCollection <T> colTop, int nCheckBottom = -1) { Stopwatch sw = new Stopwatch(); layer.Setup(colBottom, colTop); m_log.CHECK_GT(colTop.Count, 0, "Exhaustive mode requires at least one top blob."); sw.Start(); int nTotal = 0; int nIdx = 0; for (int i = 0; i < colTop.Count; i++) { nTotal += colTop[i].count(); } TestingProgressSet progress = new TestingProgressSet(); for (int i = 0; i < colTop.Count; i++) { for (int j = 0; j < colTop[i].count(); j++) { CheckGradientSingle(layer, colBottom, colTop, nCheckBottom, i, j); nIdx++; if (sw.Elapsed.TotalMilliseconds > 1000) { double dfPct = (double)nIdx / (double)nTotal; Trace.WriteLine(m_strBaseType + ": Check gradient exhaustive at " + dfPct.ToString("P") + "..."); progress.SetProgress(dfPct); sw.Restart(); } } } progress.SetProgress(0); progress.Dispose(); }