コード例 #1
0
ファイル: Program.cs プロジェクト: Alexynder/NeuralNetwork
        static void Main(string[] args)
        {
            int epochcount = 6000;
            int logPointC  = 4000;

            /*basic XOR test in few updates
             * O - O \
             *   X    O
             * O - O /
             * */
            NeuralDataSet dataForLearning = CreateNewData(1);

            NeuralNetwork.NeuralNetwork neuralNetwork = new NeuralNetwork.NeuralNetwork(new int[] { 40 }, 2, 1);
            DateTime time = DateTime.Now;

            neuralNetwork.Initialise();
            neuralNetwork.StudySpeed  = 0.1;
            neuralNetwork.studyMoment = 0.1;
            neuralNetwork.RandomiseWeights();
            neuralNetwork.SetDataSet(dataForLearning);

            string log = neuralNetwork.StudyHyperbola(epochcount, logPointC);

            TimeSpan dif = DateTime.Now - time;

            Console.WriteLine("Initialising and studiing for {1} epoches succesful, time spent: {0}", dif.ToString(), epochcount);
            System.IO.StreamWriter writer = new StreamWriter("C:\\Users\\Aleksandr\\Desktop\\log.csv", false);
            writer.WriteLine(log);
            writer.Close();
            TestNN(neuralNetwork);
            Console.ReadKey();
        }
コード例 #2
0
        /// <summary>
        /// Create a new manager based on a repository available as an XML stream (e.g. StreamReader or StringReader).
        /// </summary>
        /// <param name="reader">A TextReader that maps e.g. to a readable file stream.</param>
        /// <returns>The manager instance bound to the loaded repository.</returns>
        public static Manager ReadRepository(TextReader reader)
        {
            NeuralDataSet database = new NeuralDataSet();

            database.ReadXml(reader, System.Data.XmlReadMode.IgnoreSchema);
            return(new Manager(database));
        }
コード例 #3
0
ファイル: Program.cs プロジェクト: Alexynder/NeuralNetwork
        static NeuralDataSet CreateNewData(int repitTimes)
        {
            Double[] d1  = new double[] { 0, 0 };
            double[] do1 = new double[] { 0 };

            Double[] d2  = new double[] { 0, 1 };
            double[] do2 = new double[] { 1 };

            Double[] d3  = new double[] { 1, 0 };
            double[] do3 = new double[] { 1 };

            Double[]      d4   = new double[] { 1, 1 };
            double[]      do4  = new double[] { 0 };
            NeuralDataSet data = new NeuralDataSet()
            {
                Inputs         = new double[repitTimes * 4][],
                ExpectedResult = new double[repitTimes * 4][]
            };

            for (int i = 0; i < (repitTimes); i++)
            {
                data.Inputs[i]         = d1;
                data.ExpectedResult[i] = do1;
            }

            for (int i = repitTimes; i < (repitTimes * 2); i++)
            {
                data.Inputs[i]         = d2;
                data.ExpectedResult[i] = do2;
            }

            for (int i = repitTimes * 2; i < (repitTimes * 3); i++)
            {
                data.Inputs[i]         = d3;
                data.ExpectedResult[i] = do3;
            }
            for (int i = repitTimes * 3; i < (repitTimes * 4); i++)
            {
                data.Inputs[i]         = d4;
                data.ExpectedResult[i] = do4;
            }
            return(data);
        }
コード例 #4
0
 /// <summary>
 /// Create a manager with an empty repository.
 /// </summary>
 public Manager()
 {
     database = new NeuralDataSet();
 }
コード例 #5
0
ファイル: Manager.cs プロジェクト: sagarbatchu/rssilocalizer
 /// <summary>
 /// Create a manager with the passed repository.
 /// </summary>
 /// <param name="repository">The repository to work with.</param>
 public Manager(NeuralDataSet repository)
 {
     database = repository;
 }
コード例 #6
0
ファイル: Manager.cs プロジェクト: sagarbatchu/rssilocalizer
 /// <summary>
 /// Create a manager with an empty repository.
 /// </summary>
 public Manager()
 {
     database = new NeuralDataSet();
 }
コード例 #7
0
ファイル: Manager.cs プロジェクト: sagarbatchu/rssilocalizer
 private NeuralDataSet.TrainingItemRow[] SelectTrainingItemsFromTrainingSet(NeuralDataSet.TrainingSetsRow trainingSet)
 {
     return (NeuralDataSet.TrainingItemRow[])database.TrainingItem.Select("tiFK_trainingset = " + trainingSet.trID);
 }
コード例 #8
0
ファイル: Manager.cs プロジェクト: sagarbatchu/rssilocalizer
 private void AppendNeuronsToNeuronMap(Hashtable map, NeuralDataSet.NeuronsRow[] rows, Layer layer)
 {
     for(int i=0;i<rows.Length;i++)
         map.Add(rows[i].neID,layer[i]);
 }
コード例 #9
0
ファイル: Manager.cs プロジェクト: sagarbatchu/rssilocalizer
 private NeuralDataSet.NeuronsRow[] SelectNeuronsFromLayer(NeuralDataSet.LayersRow layer)
 {
     return (NeuralDataSet.NeuronsRow[])database.Neurons.Select("neFK_layer = " + layer.laID);
 }
コード例 #10
0
ファイル: Manager.cs プロジェクト: sagarbatchu/rssilocalizer
 private NeuralDataSet.LayersRow[] SelectLayersFromNetwork(NeuralDataSet.NetworksRow network)
 {
     return (NeuralDataSet.LayersRow[])database.Layers.Select("laFK_network = " + network.nwID);
 }
コード例 #11
0
ファイル: Manager.cs プロジェクト: sagarbatchu/rssilocalizer
 private void SaveTrainingSet(NeuralDataSet.TrainingSetsRow trainingSetRow)
 {
     NeuralDataSet.SynapsesRow[] synapseRows = SelectSynapsesFromNetwork(currentNetworkRow);
     for(int i=0;i<synapseRows.Length;i++)
         database.TrainingItem.AddTrainingItemRow(trainingSetRow,synapseRows[i],((Synapse)currentSynapseMap[synapseRows[i].syID]).Weight);
 }
コード例 #12
0
ファイル: Manager.cs プロジェクト: sagarbatchu/rssilocalizer
 private void SaveNetworkStructureAsCurrent(NeuralDataSet.NetworksRow networkRow, Network network)
 {
     Hashtable neuronInvMap = new Hashtable();
     currentNeuronMap = new Hashtable();
     currentSynapseMap = new Hashtable();
     Layer layer = network.FirstLayer;
     SaveLayerAsCurrent(neuronInvMap,layer,networkRow);
     while(layer.TargetLayer != null)
     {
         layer = layer.TargetLayer;
         SaveLayerAsCurrent(neuronInvMap,layer,networkRow);
     }
     foreach(Neuron neuron in neuronInvMap.Keys)
         foreach(Synapse synapse in neuron.SourceSynapses)
         {
             NeuralDataSet.SynapsesRow row = database.Synapses.AddSynapsesRow((NeuralDataSet.NeuronsRow)neuronInvMap[synapse.SourceNeuron],(NeuralDataSet.NeuronsRow)neuronInvMap[neuron],networkRow);
             currentSynapseMap.Add(row.syID,synapse);
         }
 }
コード例 #13
0
ファイル: Manager.cs プロジェクト: sagarbatchu/rssilocalizer
 private void SaveLayerAsCurrent(Hashtable neuronInvMap, Layer layer, NeuralDataSet.NetworksRow networkRow)
 {
     NeuralDataSet.LayersRow layerRow = database.Layers.AddLayersRow(networkRow,layer.Title);
     for(int i=0;i<layer.Count;i++)
     {
         NeuralDataSet.NeuronsRow row = database.Neurons.AddNeuronsRow(layerRow);
         neuronInvMap.Add(layer[i],row);
         currentNeuronMap.Add(row.neID,layer[i]);
     }
 }
コード例 #14
0
ファイル: Manager.cs プロジェクト: sagarbatchu/rssilocalizer
 private void SaveLayer(Hashtable neuronInvMap, Layer layer, NeuralDataSet.NetworksRow networkRow)
 {
     NeuralDataSet.LayersRow layerRow = database.Layers.AddLayersRow(networkRow,layer.Title);
     for(int i=0;i<layer.Count;i++)
         neuronInvMap.Add(layer[i],database.Neurons.AddNeuronsRow(layerRow));
 }
コード例 #15
0
ファイル: Manager.cs プロジェクト: sagarbatchu/rssilocalizer
 private void LoadTrainingSet(NeuralDataSet.TrainingSetsRow trainingSetRow)
 {
     NeuralDataSet.TrainingItemRow[] itemRows = SelectTrainingItemsFromTrainingSet(trainingSetRow);
     for(int i=0;i<itemRows.Length;i++)
         ((Synapse)currentSynapseMap[itemRows[i].tiFK_synapse]).Weight = itemRows[i].ti_weight;
 }
コード例 #16
0
 /// <summary>
 /// Create a manager with the passed repository.
 /// </summary>
 /// <param name="repository">The repository to work with.</param>
 public Manager(NeuralDataSet repository)
 {
     database = repository;
 }
コード例 #17
0
ファイル: Manager.cs プロジェクト: sagarbatchu/rssilocalizer
 private NeuralDataSet.SynapsesRow[] SelectSynapsesFromNetwork(NeuralDataSet.NetworksRow network)
 {
     return (NeuralDataSet.SynapsesRow[])database.Synapses.Select("syFK_network = " + network.nwID);
 }
コード例 #18
0
ファイル: Manager.cs プロジェクト: sagarbatchu/rssilocalizer
 /// <summary>
 /// Create a new manager based on a repository available as an XML stream (e.g. StreamReader or StringReader).
 /// </summary>
 /// <param name="reader">A TextReader that maps e.g. to a readable file stream.</param>
 /// <returns>The manager instance bound to the loaded repository.</returns>
 public static Manager ReadRepository(TextReader reader)
 {
     NeuralDataSet database = new NeuralDataSet();
     database.ReadXml(reader,System.Data.XmlReadMode.IgnoreSchema);
     return new Manager(database);
 }