private void btnInitializeNetwork_Click(object sender, EventArgs e) { (sender as Button).Enabled = false; int tranFun = indexOfTransFunc; int NumOfInputs = (int)numUpDownNumberOfInputs.Value; int Epoch = (int)numUpDownEpochNum.Value; double teachSpeed; if (!double.TryParse(txtTeachingSpeed.Text, out teachSpeed)) { MessageBox.Show("Не правильный формат введенной скорости обучения"); (sender as Button).Enabled = true; return; } if (teachSpeed > 1) { teachSpeed = 1; } if (teachSpeed < 0.1) { teachSpeed = 0.1; } txtTeachingSpeed.Text = teachSpeed.ToString(); Network.HiddenLayersInfo hiddenLayersInfo = ReadHiddenLayersInfo(); net = new Network(NumOfInputs, hiddenLayersInfo, Epoch, tranFun, teachSpeed); string schema = NumOfInputs.ToString(); for (int i = 0; i < hiddenLayersInfo.NumberOfNeuronsOnEachLayer.Length; i++) { schema += $"-{hiddenLayersInfo.NumberOfNeuronsOnEachLayer[i]}"; } MessageBox.Show($"Нейросеть инициализирована по схеме\n{schema}"); labelSchema.Text = $"Схема: {schema}"; (sender as Button).Enabled = true; }
//Передача инфы по слоям private Network.HiddenLayersInfo ReadHiddenLayersInfo() { Network.HiddenLayersInfo result = new Network.HiddenLayersInfo(); result.NumberOfLayers = (int)numHiddenLayersNum.Value + 1; result.NumberOfNeuronsOnEachLayer = new int[result.NumberOfLayers]; for (int i = 0; i < result.NumberOfLayers - 1; i++) { int temp; if (int.TryParse(dataGridNeuronNumbers.Rows[i].Cells["Neurons"].Value.ToString(), out temp)) { if (temp < 1 || temp > 20) { throw new Exception($"Обнаружено некорректное значение на слое {i + 1}"); } result.NumberOfNeuronsOnEachLayer[i] = temp; } else { throw new Exception($"Поле ввода заполнено некорректно. Невозможно прочитать количество нейронов на слое {i + 1}"); } } result.NumberOfNeuronsOnEachLayer[result.NumberOfLayers - 1] = (int)numUpDownNumberOfOutputs.Value; return(result); }