private void InitializeLocked() { if (!initialized) { DoInitialization(); initialized = true; current = null; vectorizerCount = GetVectorizers().Count(); } }
internal OptimizationResultUpdatedEventArgs(OptimizationEpoch epoch, double mse, FeatureMatrix featureMatrix, Matrix<double> output) { Contract.Requires(epoch != null); Contract.Requires(mse >= 0.0); Contract.Requires(featureMatrix != null); Contract.Requires(output != null); Epoch = epoch; MSE = mse; FeatureMatrix = featureMatrix; ComputedOutputMatrix = output; }
internal void Update(double mse, FeatureMatrix featureMatrix, Matrix<double> output) { Contract.Requires(mse >= 0.0); Contract.Requires(featureMatrix != null); Contract.Requires(output != null); lock (SyncRoot) { if (bestHolder && mse >= this.mse) return; this.mse = mse; var handler = Updated; if (handler != null) handler(this, new OptimizationResultUpdatedEventArgs(Epoch, mse, featureMatrix, output)); } }
public void Uninitialize() { if (initialized) { lock (SyncRoot) { if (initialized) { DoUninitialization(); initialized = false; current = null; } } } }
public FeatureMatrix GetNext() { lock (SyncRoot) { // Ensure initialization InitializeLocked(); var nextIndexes = selectionStrategy.GetNextIndexes(); if (nextIndexes == null || nextIndexes.Value.IsEmpty) { if (current == null) { throw new InvalidOperationException(selectionStrategy + " has returned no indexes."); } return current; } else { return current = GetFeatureMatrixInternal(nextIndexes.Value); } } }