示例#1
0
        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();
        }
示例#2
0
        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));
        }
示例#3
0
        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++;
                }
            }
        }