public RBF(int K, int numOfEpocks, double learningRate, double maxError, List<List<double>> trainingSamples, List<List<double>> trainingLabels, List<List<double>> testSamples, List<List<double>> testLabels) { this.numOfEpocks = numOfEpocks; this.trainingSamples = trainingSamples; this.trainingLabels = trainingLabels; this.testSamples = testSamples; this.testLabels = testLabels; this.maxError = maxError; this.learningRate = learningRate; Centroids = new List<List<double>>(); //[NumOfCluster][NumOfFeatures (means)] Random rnd = new Random(Guid.NewGuid().GetHashCode()); int counter = K; // Num of Clusters while (counter-- > 0) { int index = rnd.Next(trainingSamples.Count); Centroids.Add(trainingSamples[index]); } KMean = new K_Means(ref Centroids, trainingSamples); Variance = KMean.GetVariance; //// //// List<int> numOfNeuronsPerLayer = new List<int>(); backpropagation = new Backpropagation(); numOfNeuronsPerLayer.Add(K); numOfNeuronsPerLayer.Add(3); this.neuralNetwork = new FeedforwardNeuralNetwrok(2); this.neuralNetwork.setNetwork(numOfNeuronsPerLayer); this.neuralNetwork.LMSsetLayer(1, new IdentityFunction()); }
private void Train() { int numOfLayers = (int)MLNumOfLayersUpDown.Value; double learningRate = (double)MPLearningRateUpDown.Value; List<int> numOfNeuronsPerLayer = new List<int> (); int numOfEpocks = (int)MLNumOfEpocksUpDown.Value; LearningAlgorithm backpropagation = new Backpropagation (); for (int i = 0; i < numOfLayers; ++i) numOfNeuronsPerLayer.Add((i == 0) ? trainingSamples[0].Count : (i == numOfLayers - 1) ? 3 : int.Parse(NeuronsInHLayers[1,i-1].Value.ToString())); this.neuralNetwork = new FeedforwardNeuralNetwrok (numOfLayers); this.neuralNetwork.setNetwork (numOfNeuronsPerLayer); for (int i = 1; i < numOfLayers; ++i) this.neuralNetwork.setLayer (i, new SigmoidFunction ()); for (int i = 0; i < numOfEpocks; ++i) this.neuralNetwork.train (trainingSamples, trainingLabels, learningRate, backpropagation); }