Пример #1
0
        private InputLayer InicializarModeloVisualizer()
        {
            var inputLayer = new InputLayer("Input");

            var sepalLengthInput = new Input("Sepal Length");
            var SepalWidthInput  = new Input("Sepal Width");
            var PetalLengthInput = new Input("PetalLength");
            var PetalWidthInput  = new Input("Petal Width");

            inputLayer.AddNode(sepalLengthInput);
            inputLayer.AddNode(SepalWidthInput);
            inputLayer.AddNode(PetalLengthInput);
            inputLayer.AddNode(PetalWidthInput);
            inputLayer.Bias = new Bias("Bias Input")
            {
                OutputValue = 1.0
            };

            var capaOculta = new PerceptronLayer("Oculta");

            var cantNeuronasOcultas = (int)spinNeuronasOculta.Value;
            var funcionActivacion   = (cboFuncionActivacionOculta.SelectedItem as EnumInfo <ActivationType>).Valor.Map();

            for (int i = 0; i < cantNeuronasOcultas; i++)
            {
                var neurona = new Perceptron("oculta" + i)
                {
                    ActivationFunction = funcionActivacion
                };

                capaOculta.AddNode(neurona);
            }

            capaOculta.Bias = new Bias("Bias Oculta")
            {
                OutputValue = 1.0
            };

            inputLayer.Connect(capaOculta);

            funcionActivacion = (cboFuncionActivacionSalida.SelectedItem as EnumInfo <ActivationType>).Valor.Map();

            var setosaOutput = new Perceptron("Setosa")
            {
                ActivationFunction = funcionActivacion
            };
            var versicolorOutput = new Perceptron("Versicolor")
            {
                ActivationFunction = funcionActivacion
            };
            var virginicaOutput = new Perceptron("Virginica")
            {
                ActivationFunction = funcionActivacion
            };

            var capaSalida = new PerceptronLayer("Salida");

            capaSalida.AddNode(setosaOutput);
            capaSalida.AddNode(versicolorOutput);
            capaSalida.AddNode(virginicaOutput);

            capaOculta.Connect(capaSalida);

            return(inputLayer);
        }
Пример #2
0
        private void btnStart_Click(object sender, EventArgs e)
        {
            _input = new InputLayer("Input")
            {
                Bias = new Bias("bias")
                {
                    OutputValue = 1.234
                }
            };

            _input.AddNode(new Input("e1")
            {
                OutputValue = 0.255
            });
            _input.AddNode(new Input("e2")
            {
                OutputValue = 0.455
            });
            _input.AddNode(new Input("e3")
            {
                OutputValue = -0.78967656
            });
            _input.AddNode(new Input("e4")
            {
                OutputValue = 0.0
            });
            //_input.AddNode(new Input("e5") { OutputValue = 0.255 });
            //_input.AddNode(new Input("e6") { OutputValue = 0.455 });
            //_input.AddNode(new Input("e7") { OutputValue = -0.78967656 });
            //_input.AddNode(new Input("e8") { OutputValue = 0.011 });
            //_input.AddNode(new Input("e9") { OutputValue = 0.2255 });
            //_input.AddNode(new Input("e10") { OutputValue = 43.455 });
            //_input.AddNode(new Input("e11") { OutputValue = -11.67656 });
            //_input.AddNode(new Input("e12") { OutputValue = -1.001 });

            var hidden = new PerceptronLayer("Hidden");

            hidden.AddNode(new Perceptron("o1")
            {
                ActivationFunction = ActivationFunction.BinaryStep, OutputValue = 2.364, SumValue = 2.364
            });
            hidden.AddNode(new Perceptron("o2")
            {
                ActivationFunction = ActivationFunction.LeakyRelu, OutputValue = -0.552, SumValue = 55.44
            });
            hidden.AddNode(new Perceptron("o4")
            {
                ActivationFunction = ActivationFunction.Relu, OutputValue = 1.324, SumValue = 4.34
            });
            //hidden.AddNode(new Perceptron("o3") { ActivationFunction = ActivationFunction.Linear, OutputValue = 0.0, SumValue = 19.22 });
            //hidden.AddNode(new Perceptron("o5") { ActivationFunction = ActivationFunction.Sigmoid, OutputValue = -0.12, SumValue = 25.224 });
            //hidden.AddNode(new Perceptron("o6") { ActivationFunction = ActivationFunction.Tanh, OutputValue = 10.3, SumValue = 1.222 });

            _input.Connect(hidden);

            var output = new PerceptronLayer("Output");

            output.AddNode(new Perceptron("s1")
            {
                ActivationFunction = ActivationFunction.Softmax, OutputValue = 0.567656, SumValue = 0.454
            });
            output.AddNode(new Perceptron("s2")
            {
                ActivationFunction = ActivationFunction.Sigmoid, OutputValue = 0.176545, SumValue = 0.54
            });
            //output.AddNode(new Perceptron("s3") { ActivationFunction = ActivationFunction.Softmax, OutputValue = 0.9545, SumValue = 0.133 });
            //output.AddNode(new Perceptron("s4") { ActivationFunction = ActivationFunction.Softmax, OutputValue = 0.145, SumValue = 0.88 });

            hidden.Connect(output);

            var aleatorio = new Random(2);

            foreach (var p in hidden.Nodes)
            {
                foreach (var edge in p.Edges)
                {
                    int sign = aleatorio.Next(-1, 2);
                    edge.Weight = aleatorio.NextDouble() * sign;
                }
            }

            foreach (var p in output.Nodes)
            {
                foreach (var edge in p.Edges)
                {
                    int sign = aleatorio.Next(-1, 1);
                    edge.Weight = aleatorio.NextDouble() * sign;
                }
            }

            NeuralNetworkVisualizerControl1.InputLayer = _input;

            btnChangeValue.Enabled = btnAddBias.Enabled = btnClear.Enabled = trackZoom.Enabled = cboQuality.Enabled = true;
        }