public void ComplexCyclic()
    {
        var connList = new LightweightList <WeightedDirectedConnection <double> >
        {
            new WeightedDirectedConnection <double>(0, 1, -2.0),
            new WeightedDirectedConnection <double>(0, 2, 1.0),
            new WeightedDirectedConnection <double>(1, 2, 1.0),
            new WeightedDirectedConnection <double>(2, 1, 1.0)
        };
        var connSpan = connList.AsSpan();

        // Create graph.
        var digraph = WeightedDirectedGraphBuilder <double> .Create(connSpan, 1, 1);

        // Create neural net and run tests.
        var actFn = new Logistic();
        var net   = new NeuralNetCyclic(digraph, actFn.Fn, 1);

        ComplexCyclic_Inner(net, actFn);

        // Create vectorized neural net and run tests.
        var vnet = new NeuralNets.Double.Vectorized.NeuralNetCyclic(digraph, actFn.Fn, 1);

        ComplexCyclic_Inner(vnet, actFn);
    }
Ejemplo n.º 2
0
        static NeuralNetCyclicBenchmarks()
        {
            // TODO: Load neural nets directly, instead of loading a genome and decoding.
            var metaNeatGenome = new MetaNeatGenome <double>(14, 4, false, new LeakyReLU());
            var genomeLoader   = NeatGenomeLoaderFactory.CreateLoaderDouble(metaNeatGenome);
            var genome         = genomeLoader.Load("data/genomes/preycapture.genome");

            var genomeDecoder = new NeatGenomeDecoderCyclic(1);

            __nn = (NeuralNetCyclic)genomeDecoder.Decode(genome);

            // Set some non-zero random input values.
            var rng = RandomDefaults.CreateRandomSource();

            for (int i = 0; i < __nn.InputVector.Length; i++)
            {
                __nn.InputVector[i] = rng.NextDouble();
            }
        }
        public void SingleInput_WeightOne()
        {
            var connList = new List <WeightedDirectedConnection <double> >
            {
                new WeightedDirectedConnection <double>(0, 1, 1.0)
            };

            // Create graph.
            var digraph = WeightedDirectedGraphBuilder <double> .Create(connList, 1, 1);

            // Create neural net and run tests.
            var actFn = new Logistic();
            var net   = new NeuralNetCyclic(digraph, actFn.Fn, 1);

            SingleInput_WeightOne_Inner(net, actFn);

            // Create vectorized neural net and run tests.
            var vnet = new NeuralNets.Double.Vectorized.NeuralNetCyclic(digraph, actFn.Fn, 1);

            SingleInput_WeightOne_Inner(vnet, actFn);
        }
        public void MultipleInputsOutputs()
        {
            var connList = new List <WeightedDirectedConnection <double> >
            {
                new WeightedDirectedConnection <double>(0, 5, 1.0),
                new WeightedDirectedConnection <double>(1, 3, 1.0),
                new WeightedDirectedConnection <double>(2, 4, 1.0)
            };

            // Create graph.
            var digraph = WeightedDirectedGraphBuilder <double> .Create(connList, 3, 3);

            // Create neural net and run tests.
            var actFn = new Logistic();
            var net   = new NeuralNetCyclic(digraph, actFn.Fn, 1);

            MultipleInputsOutputs_Inner(net, actFn);

            // Create neural net and run tests.
            var vnet = new NeuralNets.Double.Vectorized.NeuralNetCyclic(digraph, actFn.Fn, 1);

            MultipleInputsOutputs_Inner(vnet, actFn);
        }