/// <summary> /// Main execution of the algorithm. /// </summary> public void Run() { //TODO: ensure we have a termination criteria and problem _instance.Value = this; if (!_initialized) { PerformInitialization(); } //_instance.Value = this; while (!TerminationCriterion.Terminate(this)) { //_instance.Value = this; //TODO: set instance for multipopulation? PerformIteration(); IterationComplete?.Invoke(this, this); //_instance.Value = null; } AlgorithmComplete?.Invoke(this, this); _instance.Value = null; }
/// <summary> /// Uczy sieć neuronową metodą spadku w kierunku gradientu. /// </summary> /// <param name="trainingData">Dane uczące.</param> /// <param name="ct">Token pozwalający przerwać proces uczenia poprzez sygnał z zewnątrz.</param> public void Train( IEnumerable <IDataPoint> trainingData, CancellationToken ct) { for (var i = 1;; i++) { foreach (var miniBatch in trainingData.Chunk(BatchSize)) { UpdateMiniBatch(miniBatch, BatchSize, LearningRate); if (ct.IsCancellationRequested) { break; } } IterationComplete?.Invoke(i); if (ct.IsCancellationRequested) { break; } } }
private void OnIterationComplete(GmresIterationCompleteEventArgs e) => IterationComplete?.Invoke(this, e);