public StochasticGradientDescent(IActivationFunction hiddenActivationFunction, IActivationFunction outputActivationFunction, ICostFunction costFunction, RegularizationType regularizationType, IRegularizationStrategyFactory regularizationStrategyFactory) { _hiddenActivationFunction = hiddenActivationFunction; _outputActivationFunction = outputActivationFunction; _costFunction = costFunction; _regularizationType = regularizationType; _regularizationStrategyFactory = regularizationStrategyFactory; //would normally solve this with IOC }
public IRegularizationStrategy CreateRegularizationStrategy(RegularizationType regularizationType) { switch (regularizationType) { case RegularizationType.L1: return(new L1()); case RegularizationType.L2: return(new L2()); case RegularizationType.None: return(new NoRegularization()); default: return(new L2()); } }
public INetwork LoadNetwork(string xmlFilePath, IDataSet dataset) { _xmlDoc = new XmlDocument(); _filepath = xmlFilePath; _xmlDoc.Load(_filepath); //Create Training Params---------------------8::::::::::::::>---------------------------------------- TrainingParameters trainingParams = new TrainingParameters() { epochs = Convert.ToInt32(GetXmlValue("NeuralNetwork/Settings/TrainingParameters/Epochs")), learningRate = Convert.ToDouble(GetXmlValue("NeuralNetwork/Settings/TrainingParameters/LearningRate")), momentum = Convert.ToDouble(GetXmlValue("NeuralNetwork/Settings/TrainingParameters/Momentum")) }; //Create LayerStructure---------------------8::::::::::::::>---------------------------------------- List <int> hiddenLayersList = new List <int>(); int numberOfHiddenLayers = Convert.ToInt32(GetXmlValue("NeuralNetwork/Settings/LayerStructure/NumberOfHiddenLayers")); for (int i = 1; i <= numberOfHiddenLayers; i++) { int numberOfNeuronsInHiddenLayer = Convert.ToInt32(GetXmlValue("NeuralNetwork/Settings/LayerStructure/NumberOfNeuronsInHiddenLayer" + i.ToString())); hiddenLayersList.Add(numberOfNeuronsInHiddenLayer); } LayerStructure layerStructure = new LayerStructure() { numberOfInputNodes = Convert.ToInt32(GetXmlValue("NeuralNetwork/Settings/LayerStructure/NumberOfInputNeurons")), numberOfOutputNodes = Convert.ToInt32(GetXmlValue("NeuralNetwork/Settings/LayerStructure/NumberOfOutputNeurons")), HiddenLayerList = hiddenLayersList }; //Create Distribution Type---------------------8::::::::::::::>---------------------------------------- string distribution = GetXmlValue("NeuralNetwork/Settings/DistributionType/InitialRandomDistributionType"); var distributionType = Type.GetType(distribution + ",NeuralNetwork.Core"); IInitialRandomDistributionType initialDistribution = Activator.CreateInstance(distributionType) as IInitialRandomDistributionType; //Create Strategy---------------------8::::::::::::::>---------------------------------------- string hiddenFunction = GetXmlValue("NeuralNetwork/Settings/Strategy/HiddenLayerActivationFunction"); string outputFunction = GetXmlValue("NeuralNetwork/Settings/Strategy/OutputLayerActivationFunction"); string costFunc = GetXmlValue("NeuralNetwork/Settings/Strategy/CostFunction"); string regularizationEnum = GetXmlValue("NeuralNetwork/Settings/Strategy/RegularizationType"); string regularizationStrategyFactory = GetXmlValue("NeuralNetwork/Settings/Strategy/RegularizationStrategyFactory"); var hiddenFunctionType = Type.GetType(hiddenFunction + ",NeuralNetwork.Core"); var outputFunctionType = Type.GetType(outputFunction + ",NeuralNetwork.Core"); var costFunctionType = Type.GetType(costFunc + ",NeuralNetwork.Core"); var regularizationStrategyFactoryType = Type.GetType(regularizationStrategyFactory + ",NeuralNetwork.Core"); IActivationFunction hiddenActivationFunction = Activator.CreateInstance(hiddenFunctionType) as IActivationFunction; IActivationFunction outputActivationFunction = Activator.CreateInstance(outputFunctionType) as IActivationFunction; ICostFunction costFunction = Activator.CreateInstance(costFunctionType) as ICostFunction; RegularizationType regularizationType = (RegularizationType)Enum.Parse(typeof(RegularizationType), regularizationEnum); IRegularizationStrategyFactory regularizationStrategyFact = Activator.CreateInstance(regularizationStrategyFactoryType) as IRegularizationStrategyFactory; string optimizationStrategy = GetXmlValue("NeuralNetwork/Settings/Strategy/OptimizationStrategy"); var optStrategy = Type.GetType(optimizationStrategy + ",NeuralNetwork.Core"); IOptimizationStrategy strategy = Activator.CreateInstance(optStrategy, hiddenActivationFunction, outputActivationFunction, costFunction, regularizationType, regularizationStrategyFact) as IOptimizationStrategy; //Create Network---------------------8::::::::::::::>---------------------------------------- network = new ArtificialNeuralNetwork(layerStructure, trainingParams, dataset, strategy, initialDistribution); //Set Weights---------------------8::::::::::::::>---------------------------------------- network.Weights.Clear(); LoadInputWeights(); LoadHiddenWeights(); //Set Biases---------------------8::::::::::::::>---------------------------------------- network.Biases.Clear(); LoadHiddenBiases(); LoadOutputBiases(); //Clear XMLDoc---------------------8::::::::::::::>---------------------------------------- _xmlDoc = null; return(network); }