public ANNParameters() { // m_LearningAlgo = LearningAlgoritm.BP; m_PSOParameters = new PSOParameters(); m_IsClasificationProblem = false; m_Momentum = 0.4; m_inputNormalization = NormalizationType.MinMax; m_outputNormalization = NormalizationType.MinMax; m_ActFunction = new Sigmoid(1.0); m_ActFuncParam1 = 1.0; m_LearningRate = 0.1; m_NumHiddenLayers = 1; m_NeuronsInHiddenLayer = 50; }
/// <summary> /// Before we start solver prepare all neccessery information /// </summary> /// <param name="termSet"></param> /// <param name="funSet"></param> /// <param name="annParams"></param> public override void PrepareAlgorithm(Experiment expData, ANNParameters annParams = null) { if (annParams == null || expData == null) { throw new Exception("Argument value cannot be null"); } //reset iteration and network if (m_Network == null) { m_IterationCounter = 0; //depending on the type of the colum create adequate neural network var colType = expData.GetOutputColumnType(); if (colType == ColumnDataType.Binary)//Binary Clasification { m_Network = new BCNeuralNetwork(annParams, expData.GetColumnInputCount_FromNormalizedValue(), expData.GetColumnOutputCount_FromNormalizedValue()); } else//multiclass classification { m_Network = new MCNeuralNetwork(annParams, expData.GetColumnInputCount_FromNormalizedValue(), expData.GetColumnOutputCount_FromNormalizedValue()); } m_Network.InitializeNetwork(); } // m_Experiment = expData; PSOParameters swarm = null; if (m_Parameters != null) { swarm = m_Parameters.m_PSOParameters; } else { m_psoAlgorithm = null; swarm = annParams.m_PSOParameters; } // m_Parameters = annParams; m_Parameters.m_PSOParameters = swarm; m_expRowCount = m_Experiment.GetRowCount(); IsAlgorthmPrepared = true; StopIteration = false; float newfitness = 0; if (m_psoAlgorithm == null) { //initilaize swarm m_Parameters.m_PSOParameters.m_Dimension = m_Network.GetWeightsAndBiasCout(); m_psoAlgorithm = new ParticleSwarm(m_Parameters.m_PSOParameters, CrossEntropy); //init newfitness = m_psoAlgorithm.InitSwarm(); } // else newfitness = m_psoAlgorithm.RunSwarm(); var model = CalculateModel(false); //Send report for iteration var rp = new ProgressIndicatorEventArgs() { ReportType = ProgramState.Started, LearningError = newfitness, CurrentIteration = 0, LearnOutput = model, }; ReportProgress(rp); }