public NeuralNet(NeuralNetParameters parameters) { wagesBetweenInputAndFirstHiddenLayer = ArrayAllocatorUtils.Allocate <double>(parameters.InputLayerSize, parameters.HiddenLayerSize); wagesBetweenHiddenLayers = ArrayAllocatorUtils.Allocate <double>(parameters.NumberOfHiddenLayers - 1, parameters.HiddenLayerSize, parameters.HiddenLayerSize); wagesBetweenLastHiddenAndOutputLayer = ArrayAllocatorUtils.Allocate <double>(parameters.HiddenLayerSize, parameters.OutputLayerSize); biasesInHiddenLayers = ArrayAllocatorUtils.Allocate <double>(parameters.NumberOfHiddenLayers, parameters.HiddenLayerSize); biasesInOutputLayer = ArrayAllocatorUtils.Allocate <double>(parameters.OutputLayerSize); this.activationFunctionType = parameters.ActivationFunctionType; activationFunction = ActivationFunctionFactory.Get(activationFunctionType); }
public static IActivationFunction GetActivationFunction(EActivationFunctionType type) { if (type == EActivationFunctionType.Sum) { return((IActivationFunction) new CSum()); } else if (type == EActivationFunctionType.Tanh) { return((IActivationFunction) new CTanh()); } else if (type == EActivationFunctionType.Step) { return((IActivationFunction) new CStep()); } throw new ApplicationException(type.ToString() + " is not supported."); }
public static IActivationFunction Get(EActivationFunctionType type) { switch (type) { case EActivationFunctionType.Sum: return(new Sum()); case EActivationFunctionType.Tanh: return(new Tanh()); case EActivationFunctionType.Step: return(new Step()); default: throw new ArgumentException(type.ToString() + " is not supported."); } }
public MultiLayerNeuralNet(int inputLayerSize, int outputLayerSize, int hiddenLayerSize, int numberOfHiddenLayers, EActivationFunctionType activationFunctionType = EActivationFunctionType.Tanh) { this.wagesBetweenInputAndFirstHiddenLayer = new float[inputLayerSize, hiddenLayerSize]; this.wagesBetweenHiddenLayers = new float[numberOfHiddenLayers - 1][, ]; this.biasesInHiddenLayers = new float[numberOfHiddenLayers][]; for (int i = 0; i < this.wagesBetweenHiddenLayers.Length; i++) { this.wagesBetweenHiddenLayers[i] = new float[hiddenLayerSize, hiddenLayerSize]; } for (int i = 0; i < this.biasesInHiddenLayers.Length; i++) { this.biasesInHiddenLayers[i] = new float[hiddenLayerSize]; } this.wagesBetweenLastHiddenAndOutputLayer = new float[hiddenLayerSize, outputLayerSize]; this.biasesInOutputLayer = new float[outputLayerSize]; this.activationFunction = CActivationFunctionProvider.GetActivationFunction(activationFunctionType); }