internal void UpdateReport(OptimizationReportEventArgs report) { Report = report; int iters = report.Session.Epoch * report.Session.IterationsPerEpoch; for (int i = 0; i < report.Errors.Count; i++, _errIdx++) { if (_errDecimator == 0 || _errIdx >= _errDecimator) { _errIdx = 0; _errorSeries.AddPoint(new DataPoint(iters + report.Session.Iteration - report.Errors.Count + i, report.Errors[i].FilteredError)); } } if (_errorSeries.SeriesPoints.Count >= PlotResolution) { _errorSeries.DecimatePoints(2); _errDecCnt++; _errDecimator = _errDecCnt * 2; _errIdx = 0; } PlotModel.ZoomX(); PlotModel.ZoomY(); PlotModel.InvalidatePlot(true); }
private void TrainerOnTrainReport(object sender, OptimizationReportEventArgs e) { Dispatch(() => { ReportModel.UpdateReport(e); OptionsModel.LearningRate = e.LearningRate; }); }