/// <summary>
 /// Takes another neural network and changes random values in it
 /// </summary>
 /// <param name="parent"></param>
 public NeuralNetwork(NeuralNetwork parent)
 {
     m_layers       = parent.m_layers;
     m_inputNeurons = new InputNeuron[parent.m_inputNeurons.Length];
     for (int i = 0; i < m_inputNeurons.Length; i++)
     {
         m_inputNeurons[i] = InputNeuron.WithMutations(parent.m_inputNeurons[i]);
     }
     m_hiddenNeurons = new HiddenNeuron[parent.m_hiddenNeurons.Length][];
     for (int i = 0; i < m_hiddenNeurons.Length; i++)
     {
         m_hiddenNeurons[i] = new HiddenNeuron[parent.m_hiddenNeurons[i].Length];
         for (int j = 0; j < m_hiddenNeurons[i].Length; j++)
         {
             m_hiddenNeurons[i][j] = HiddenNeuron.WithMutations(parent.m_hiddenNeurons[i][j]);
         }
     }
     m_outputNeurons = new OutputNeuron[parent.m_outputNeurons.Length];
     for (int i = 0; i < m_outputNeurons.Length; i++)
     {
         m_outputNeurons[i] = OutputNeuron.WithMutations(parent.m_outputNeurons[i]);
     }
 }