public Perceptron(uint[] Neuron_layers_sizes) { if (Neuron_layers_sizes == null || Neuron_layers_sizes.Length < 2) { throw new Exception("bad args"); } foreach (uint count in Neuron_layers_sizes) { if (count == 0) { throw new Exception("bad args"); } } NeuronData[][] neurons_data = new NeuronData[Neuron_layers_sizes.Length][]; for (int i = 0; i < Neuron_layers_sizes.Length; i++) { neurons_data[i] = new NeuronData[Neuron_layers_sizes[i]]; if (i > 0) { double[] weights = new double[Neuron_layers_sizes[i - 1]]; for (int j = 0; j < Neuron_layers_sizes[i]; j++) { neurons_data[i][j] = new NeuronData(weights, 1); } } } construct(neurons_data); reinit(); }
public override string ToString() { NeuronData[][] neurons = new NeuronData[layers.Length][]; for (int i = 0; i < neurons.Length; i++) { neurons[i] = new NeuronData[layers[i].Length]; for (int j = 0; j < neurons[i].Length; j++) { var parents = layers[i][j].Parents; double[] weights = new double[parents.Count - 1]; double bias_weight = 0; int _i_ = 0; foreach (var link in parents) { if (link.neuron == bias) { bias_weight = link.weight; } else { weights[_i_++] = link.weight; } } neurons[i][j] = new NeuronData(weights, bias_weight); } } return(JsonConvert.SerializeObject(neurons)); }
static void Main(string[] args) { //vybrat excel s hodnotami //vyparsovat ho, ulozit si hodnoty //rozbehat neuronku //naucit neuronku //testovat neuronku //skusit pustit data on-the-fly OpenFileDialog ofd = new OpenFileDialog() { Multiselect = false }; string excelFileName; if (ofd.ShowDialog() == DialogResult.OK) { excelFileName = ofd.FileName; } else { throw new Exception("Je nutne vybrat subor"); } var excelManager = new ExcelParser(excelFileName); excelManager.ParseSourceData(); double[][] input = NeuronData.GetInputMatrix(); double[][] output = NeuronData.GetOutputMatrix(); // create neural network ActivationNetwork network = new ActivationNetwork( new SigmoidFunction(3), 3, // two inputs in the network 3, // two neurons in the first layer 2); // one neuron in the second layer // create teacher BackPropagationLearning teacher = new BackPropagationLearning(network); bool needToStop = false; // loop while (!needToStop) { // run epoch of learning procedure System.Threading.Thread.Sleep(1000); double error = teacher.RunEpoch(input, output); Console.WriteLine(error); // check error value to see if we need to stop // ... } }
/// <summary> /// Рекурсивно удалить нейронные сети. /// </summary> /// <param name="unitOfWork">Модуль для работы с БД.</param> /// <param name="neuronId">Идентификатор нейрона.</param> private void DeleteNetworkRecursive(IUnitOfWork unitOfWork, NeuronData neuron) { if (neuron == null || neuron.Network == null) { return; } foreach (var currentNeuron in neuron.Network.Neurons) { DeleteNetworkRecursive(unitOfWork, currentNeuron); } neuron.Network.Weights.ForEach(w => unitOfWork.WeightRepository.Delete(w)); neuron.Network.InputAttributes.ForEach(i => unitOfWork.InputAttributeRepository.Delete(i)); neuron.Network.Neurons.ForEach(n => unitOfWork.NeuronRepository.Delete(n.Neuron)); unitOfWork.NetworkRepository.Delete(neuron.Network.Network); }
void SetupNeuralNetworkData() { FirstLayer = new NeuronData[NumberOfKeywords]; for (int i = 0; i < FirstLayer.Length; i++) { FirstLayer[i] = new NeuronData(); } foreach (var item in FirstLayer) { item.Weight = new float[Vertical * Horizontal]; for (int j = 0; j < Vertical * Horizontal; j++) { item.Weight[j] = 0.4f + UnityEngine.Random.value * 0.2f; } item.Bias = 0.0f; } RawData = new float[Vertical * Horizontal]; Output = new float[NumberOfKeywords]; Target = new float[NumberOfKeywords]; }
public void ParseSourceData() { var i = 1; var cnt = 0; using (ExcelPackage sourceFile = new ExcelPackage(new FileInfo(_fileName))) { var myWorksheet = sourceFile.Workbook.Worksheets.First(); //select sheet here var totalRows = myWorksheet.Dimension.End.Row; var totalColumns = myWorksheet.Dimension.End.Column; cnt = totalRows; var sb = new StringBuilder(); //this is your your data for (int rowNum = 2; rowNum <= totalRows; rowNum++) //select starting row here { var row = myWorksheet.Cells[rowNum, 1, rowNum, totalColumns]; NeuronData.AddExcelRowData(row); Console.WriteLine($"parsing: - {i}/{cnt}"); i++; } } }