/// <param name="numberInputNeurons">Количество входных нейронов.</param> /// <param name="numberHiddenNeurons">Количество нейронов скрытого слоя.</param> /// <param name="weightRange">Диапозон весов ДМЧ</param> /// /// <param name="learningRule">Правило обучения <see cref="LearningRuleNeurons"/> нейронов. /// По умолчанию стоит правило <see cref="LearningRuleNeurons.Hebbian"/>.</param> public TreeParityMachine(uint numberInputNeurons, uint numberHiddenNeurons, int weightRange, LearningRuleNeurons learningRule = LearningRuleNeurons.Hebbian) { NumberInputNeurons = numberInputNeurons; NumberHiddenNeurons = numberHiddenNeurons; WeightRange = weightRange; LearningRule = learningRule; WeightsNeurons = GenerationWeights(numberInputNeurons, numberHiddenNeurons, weightRange); }
/// <summary> /// Запуск протокола Диффи-Хеллмана с древовидной машиной четности /// </summary> /// <param name="numInputNeurons">Количество входных нейронов в ДМЧ <see cref="TreeParityMachine"/></param> /// <param name="numHiddenNeoruns">Количество скрытых нейронов в ДМЧ <see cref="TreeParityMachine"/></param> /// <param name="weightRange">Диапозон весов в ДМЧ <see cref="TreeParityMachine"/></param> /// <param name="rule">Правило обучения нейронов в ДМЧ <see cref="TreeParityMachine"/></param> public virtual async Task RunProtocolAsync(uint numInputNeurons, uint numHiddenNeoruns, int weightRange, LearningRuleNeurons rule) { Machine = new TreeParityMachine(numInputNeurons, numHiddenNeoruns, weightRange, rule); Debug.WriteLine("Run Protocol"); // Проверка параметров ДМЧ try { ClosedTokenSource.CancelAfter(TimeSpan.FromSeconds(30)); await HubProtocolConnection.InvokeAsync("CompareParams", NameRecipient, numInputNeurons, numHiddenNeoruns, weightRange).ConfigureAwait(false); } catch (Exception ex) { Debug.WriteLine(ex); throw ex; } }
/// <summary> /// Запускает протокол Диффи-Хеллмана /// </summary> public async Task RunProtocolAsync(uint numInputNeurons, uint numHiddenNeurons, int weightRange, LearningRuleNeurons rule) { // установка значений TextLabel paramsTPMLabel.Text = $"({numHiddenNeurons}, {numInputNeurons}, {weightRange})"; runtimeLabel.Text = TimeSpan.Zero.ToString(); Protocol = GetNewDiffieHellman(_protocolOption); SetHandleProtocol(); try { await Protocol.ConnectAsync(UserName, Password, Recipient); await Protocol.RunProtocolAsync(numInputNeurons, numHiddenNeurons, weightRange, rule); } catch (Exception ex) { MessageBox.Show(ex.Message, "Ошибка выполнения протокола!", MessageBoxButtons.OK, MessageBoxIcon.Error); } return; }
/// <summary> /// Запуск протокола Диффи-Хеллмана с древовидной машиной четности /// </summary> /// <param name="numInputNeurons">Количество входных нейронов в ДМЧ <see cref="TreeParityMachine"/></param> /// <param name="numHiddenNeoruns">Количество скрытых нейронов в ДМЧ <see cref="TreeParityMachine"/></param> /// <param name="weightRange">Диапозон весов в ДМЧ <see cref="TreeParityMachine"/></param> /// <param name="rule">Правило обучения нейронов в ДМЧ <see cref="TreeParityMachine"/></param> public override async Task RunProtocolAsync(uint numInputNeurons, uint numHiddenNeoruns, int weightRange, LearningRuleNeurons rule) { MachineInterceptor = new TreeParityMachine(numInputNeurons, numHiddenNeoruns, weightRange, rule); await base.RunProtocolAsync(numInputNeurons, numHiddenNeoruns, weightRange, rule).ConfigureAwait(false); }