public static void AssertActivationFunctionsEqual(Neuron.ActivationFunction left, Neuron.ActivationFunction right, params double[] values) { foreach (var value in values) { Assert.AreEqual(left(value), right(value)); } }
public static Layer Generate(int dimension, int inputDimension, double minimumWeight = -1.0, double maximumWeight = 1, [CanBeNull] Neuron.ActivationFunction activation = null) { if (dimension < 1) { throw new ArgumentException("The layer dimension must be at least 1", nameof(dimension)); } var neurons = new Neuron[dimension]; for (var i = 0; i < dimension; i++) { neurons[i] = Neuron.Generate(inputDimension, minimumWeight, maximumWeight, activation); } return(new Layer(neurons)); }
public static Network Generate([NotNull] int[] layerDimensions, double minimumWeight = -1.0, double maximumWeight = 1.0, [CanBeNull] Neuron.ActivationFunction activation = null) { if (layerDimensions.Length == 0) { throw new ArgumentException("There must be at least one layer", nameof(layerDimensions)); } var layers = new Layer[layerDimensions.Length - 1]; for (var layerIndex = 1; layerIndex < layerDimensions.Length; layerIndex++) { var dimension = layerDimensions[layerIndex]; var inputDimension = layerDimensions[layerIndex - 1]; var layer = Layer.Generate(dimension, inputDimension, minimumWeight, maximumWeight, activation); layers[layerIndex - 1] = layer; } return(new Network(layerDimensions[0], layers)); }