예제 #1
0
        public INeuralNetwork Clone()
        {
            var simpleNetwork = SimpleNeuralNetworkFactory.Create(Inputs.Count, Hidden.Count, Output.Count);

            // Copy weights
            for (int i = 0; i < Synapses.Count; i++)
            {
                simpleNetwork.Synapses.ElementAt(i).Weight = Synapses.ElementAt(i).Weight;
            }

            // Copy activation functions
            var sourceNeurons = Neurons.OfType <ICalculatableNeuron>().ToArray();
            var targetNeurons = simpleNetwork.Neurons.OfType <ICalculatableNeuron>().ToArray();

            for (int i = 0; i < sourceNeurons.Count(); i++)
            {
                targetNeurons.ElementAt(i).ActivationFunction = sourceNeurons.ElementAt(i).ActivationFunction;
            }

            simpleNetwork.Generation = Generation;

            return(simpleNetwork);
        }