private void Button_Click_1(object sender, RoutedEventArgs e)
        {
            var numberOfNeurons = int.Parse(InputNumber.Text);

            Network = new Network(numberOfNeurons);

            foreach (var item in Layers.Items)
            {
                var properties = item.ToString().Split(' ');
                var neurons    = int.Parse(properties[0]);
                IActivationFunction activation;
                if (properties[1] == "S")
                {
                    activation = new SigmoidFunction();
                }
                else
                {
                    activation = new IdentityFunction();
                }

                ILayerUtility utility;
                if (properties[2] == "B")
                {
                    utility = new BiasedUtility();
                }
                else
                {
                    utility = new UnbiasedUtility();
                }

                Network.AddLayer(new Layer(neurons, activation, utility));
            }
        }
        public async void Http_trigger_should_return_known_hash(string username, string password, string hash)
        {
            var logger = TestFactory.CreateLogger();
            var body   = JsonConvert.SerializeObject(new LoginRequestCommand
            {
                UserName = username,
                Password = password
            });
            var request  = TestFactory.CreateCommandHttpRequest(body);
            var response = (OkObjectResult)await IdentityFunction.Run(request, logger);

            Assert.Equal(hash, response.Value);
        }
        public List <IdentityFunction> Initialize()
        {
            var functions   = new List <IdentityFunction>();
            var actionDescs = _actionProvider.ActionDescriptors.Items.Cast <ControllerActionDescriptor>();

            foreach (var item in actionDescs)
            {
                IdentityFunction action = GetFunction(item);
                if (IsRepeatMethod(action, functions))
                {
                    //此url重复
                    return(null);
                }
                functions.Add(action);
            }
            return(functions);
        }
        /// <summary>
        /// 获取功能信息
        /// </summary>
        /// <param name="actionDesc"></param>
        /// <returns></returns>
        private IdentityFunction GetFunction(ControllerActionDescriptor actionDesc)
        {
            EnumFunctionAccessType accessType = EnumFunctionAccessType.Anonymous;
            var ControllerName        = actionDesc.ControllerTypeInfo.GetDescription();
            var ActionName            = actionDesc.MethodInfo.CustomAttributes.FirstOrDefault(z => z.AttributeType == typeof(DescriptionAttribute))?.ConstructorArguments.FirstOrDefault().Value;
            var methods               = string.Join(", ", actionDesc.ActionConstraints?.OfType <HttpMethodActionConstraint>().SingleOrDefault()?.HttpMethods ?? new string[] { "any" });
            IdentityFunction function = new IdentityFunction()
            {
                Name       = $"{ControllerName}-{ActionName}",
                AccessType = accessType,
                Area       = GetArea(actionDesc.ControllerTypeInfo),
                Controller = actionDesc.ControllerName,
                Action     = actionDesc.ActionName,
                Methods    = methods,
                Url        = actionDesc.AttributeRouteInfo?.Template.ToLower()
            };

            return(function);
        }
示例#5
0
        private void TrainBtnClick(object sender, RoutedEventArgs e)
        {
            double learningRate;
            double momentum;
            int    iterations;

            if (TypeComboBox.SelectedItem is null)
            {
                return;
            }
            if (TypeComboBox.SelectedValue.ToString() == "Classification")
            {
                networkType = new ClassificationNetwork();
            }
            else
            {
                networkType = new RegressionNetwork();
            }
            int classesCount    = 0;
            int attributesCount = 0;

            if (!Double.TryParse(this.EtaTb.Text, out learningRate))
            {
                return;
            }
            if (!Double.TryParse(this.AlphaTb.Text, out momentum))
            {
                return;
            }


            // parse neuron counts separated by commas
            var neurons = this.HiddenNeuronsTb.Text.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Select(x =>
            {
                var res = 0;
                if (!Int32.TryParse(x, out res))
                {
                    return(0);
                }
                return(res);
            }).ToList();

            if (neurons.Any(x => x <= 0))
            {
                return;
            }

            if (!Int32.TryParse(this.IterationsTb.Text, out iterations))
            {
                return;
            }
            var trainSet = this.GetSetFromFile(ref classesCount, ref attributesCount)?.NormalizedData;

            if (trainSet == null)
            {
                return;
            }
            // TODO: permit user to model network and edit parameters
            int         outputNeurons      = classesCount;
            IActivation activationFunction = new SigmoidFunction();

            if (networkType is RegressionNetwork)
            {
                outputNeurons      = 1;
                activationFunction = new IdentityFunction();
            }
            this.network = new Network().BuildNetwork(attributesCount, neurons, outputNeurons, learningRate, momentum, activationFunction, networkType);

            var tb = ShowWaitingDialog();

            Task.Run(() =>
            {
                var errors = this.network.Train(trainSet, iterations);

                tb.Dispatcher.Invoke(() =>
                {
                    this.DrawChart
                    (
                        "Error function",
                        new List <IEnumerable <Tuple <double, double> > >()
                    {
                        Enumerable.Range(1, iterations).Zip(errors, (it, val) => new Tuple <double, double>((double)it, val))
                    },
                        1,
                        iterations,
                        errors.Min(),
                        errors.Max()
                    );
                    DialogHost.CloseDialogCommand.Execute(null, tb);
                });
            });

            // TODO: update GUI
        }
        /// <summary>
        /// 是否存在重复的功能信息
        /// </summary>
        /// <param name="action">要判断的功能信息</param>
        /// <param name="functions">已存在的功能信息集合</param>
        /// <returns></returns>
        private bool IsRepeatMethod(IdentityFunction action, List <IdentityFunction> functions)
        {
            var exist = functions.FirstOrDefault(x => x.Url == action.Url);

            return(exist != null);
        }