protected override double InnerRun(T[][] observations, int[] outputs) { init(); convergence.Clear(); do { RunEpoch(observations, outputs); if (Token.IsCancellationRequested) break; } while (!convergence.HasConverged); return convergence.NewValue; }