/// <summary>
        /// Метод для конвертации словаря в нейронну сеть
        /// </summary>
        /// <param name="name">Название нейронной сети</param>
        private static void DictToNetwork(string name, Dictionary <string, object> dictionary, EventHandler eventHandler)
        {
            // определение названия нейронной сети
            Save.NNetwork = new NeuralNetwork(name);

            // определение входных данных
            Save.NNetwork.InputShape[0] = ((JArray)dictionary["InputShape"]).ToObject <List <int> >()[0];
            Save.NNetwork.InputShape[1] = ((JArray)dictionary["InputShape"]).ToObject <List <int> >()[1];

            // определение параметров нейронной сети
            Dictionary <string, object> paramsN = ((JObject)dictionary["Params"]).ToObject <Dictionary <string, object> >();

            foreach (string key in paramsN.Keys)
            {
                Save.NNetwork.Params[key] = (string)paramsN[key];
            }

            // определение слоев и соединений нейронных сетей
            DictToLayers(((JArray)dictionary["Layers"]).ToObject <List <Dictionary <string, object> > >(), eventHandler);
            DictToConnection(((JArray)dictionary["Connections"]).ToObject <List <Dictionary <string, object> > >());

            // определение первого слоя нейронной сети
            int index = (int)(long)dictionary["FirstLayer"];

            if (index != -1)
            {
                SelectLayer.SelectFirst(Save.NNetwork.Layers[index].Component);
            }
        }
 /// <summary>
 /// Метод для обработки двойного нажатия на слой (пользователь выбрал слой для соединения или пометки как главного)
 /// </summary>
 private void LayerPanel_MouseDoubleClick(object sender, MouseEventArgs e)
 {
     switch (e.Button)
     {
     case MouseButtons.Left:
         if (firstLayerRadioButton.Checked)
         {
             SelectLayer.SelectFirst((Component)sender);
         }
         else
         {
             SelectLayer.Select((Component)sender);
         }
         BlockTrain(sender, e);
         break;
     }
 }