public void OptimumHiddenUnitsCalculatorCalculatesOptimumNumberOfUnitsForTrainingPattern(int numberOfClassifications, int expectedResult) //Log2(distinctClassifications) { var trainingPatterns = new List <TrainingPattern> { new TrainingPattern(new double [] { }, new[] { 1d, 0d }), new TrainingPattern(new double [] { }, new[] { 1d, 0d }), new TrainingPattern(new double [] { }, new[] { 1d, 0d }), new TrainingPattern(new double [] { }, new[] { 1d, 0d }), new TrainingPattern(new double [] { }, new[] { 1d, 0d }), }; for (var c = 1; c < numberOfClassifications; c++) { trainingPatterns.Add(new TrainingPattern(new double[] { }, new[] { 1.1d * c, 1d })); } var optimumNumberOfUnits = OptimumHiddenUnitsCalculator.CalculateFor(trainingPatterns); optimumNumberOfUnits.Should().Be(expectedResult); }
public IUnitActivationCreatorAndChaining ANewLayerOfHiddenUnitsOptimizedForTrainingPatterns(IEnumerable <TrainingPattern> trainingPatterns) { var numberOfUnits = OptimumHiddenUnitsCalculator.CalculateFor(trainingPatterns); return(ANewLayerOfHiddenUnits(numberOfUnits)); }