private BAMNetwork Create()
        {
            var network = new BAMNetwork(6, 3);

            network.WeightsF1ToF2[1, 1] = 2.0;
            network.WeightsF2ToF1[2, 2] = 3.0;
            return(network);
        }
 private void ValidateBAM(BAMNetwork network)
 {
     Assert.AreEqual(6, network.F1Count);
     Assert.AreEqual(3, network.F2Count);
     Assert.AreEqual(18, network.WeightsF1ToF2.Size);
     Assert.AreEqual(18, network.WeightsF2ToF1.Size);
     Assert.AreEqual(2.0, network.WeightsF1ToF2[1, 1]);
     Assert.AreEqual(3.0, network.WeightsF2ToF1[2, 2]);
 }
        public void TestPersistSerial()
        {
            BAMNetwork network = Create();

            SerializeObject.Save(SERIAL_FILENAME.ToString(), network);
            var network2 = (BAMNetwork)SerializeObject.Load(SERIAL_FILENAME.ToString());

            ValidateBAM(network2);
        }
        public void TestPersistEG()
        {
            BAMNetwork network = Create();

            EncogDirectoryPersistence.SaveObject(EG_FILENAME, network);
            var network2 = (BAMNetwork)EncogDirectoryPersistence.LoadObject(EG_FILENAME);

            ValidateBAM(network2);
        }
Example #5
0
        public void RunBAM(BAMNetwork network, NeuralDataMapping data)
        {
            var line = new StringBuilder();

            line.Append(MappingToString(data));
            network.Compute(data);
            line.Append("  |  ");
            line.Append(MappingToString(data));
            app.WriteLine(line.ToString());
        }
Example #6
0
 /// <returns>The generated network.</returns>
 public IMLMethod Generate()
 {
     var bam = new BAMNetwork(_f1Neurons, _f2Neurons);
     return bam;
 }
Example #7
0
        static void Main(string[] args)
        {
//			if( args.Length != 2 )
//			{
//				Console.WriteLine( "Invalid argument list." );
//				return;
//			}
            const int patterns = 5;
            const int inputs   = 35;
            const int outputs  = 5;

            GenerateOutputValues();
            GenerateInputPatterns();

            var data = CreatePatterns(inputs, outputs);

            var upperdata = CreateUpperPatterns(inputs, outputs);

            var builder = new StringBuilder();

            // Print Training Set
            Console.WriteLine("Training Set");
            for (var i = 0; i < patterns; i++)
            {
                Console.WriteLine("Index: {0}", i);

                builder.Remove(0, builder.Length);

                for (var j = 0; j < data[i].getInSize(); j++)
                {
                    if (builder.Length > 0)
                    {
                        builder.Append(",");
                    }
                    builder.Append(data[i].getIn(j));
                }
                Console.WriteLine("   Inputs: {0}", builder);

                builder.Remove(0, builder.Length);
                for (var j = 0; j < data[i].getOutSize(); j++)
                {
                    if (builder.Length > 0)
                    {
                        builder.Append(",");
                    }
                    builder.Append(data[i].getOut(j));
                }

                Console.WriteLine("   Outputs: {0}", builder);
            }


            for (var i = 0; i < patterns; i++)
            {
                Console.WriteLine("Index: {0}", i + 5);

                builder.Remove(0, builder.Length);

                for (var j = 0; j < upperdata[i].getInSize(); j++)
                {
                    if (builder.Length > 0)
                    {
                        builder.Append(",");
                    }
                    builder.Append(upperdata[i].getIn(j));
                }

                Console.WriteLine("   Inputs: {0}", builder);

                builder.Remove(0, builder.Length);
                for (int j = 0; j < upperdata[i].getOutSize(); j++)
                {
                    if (builder.Length > 0)
                    {
                        builder.Append(",");
                    }

                    builder.Append(upperdata[i].getOut(j));
                }
                Console.WriteLine("   Outputs: {0}", builder);
            }

            // Create BAM
            var bam      = new BAMNetwork(inputs, outputs);
            var upperbam = new BAMNetwork(inputs, outputs);

            // always have to create the network first, or nothing works
            bam.CreateNetwork();
            upperbam.CreateNetwork();

            // Train the BAM
            for (var i = 0; i < patterns; i++)             // Add All Patterns to the BAM
            {
                bam.SetNodeValue(data[i]);                 // Load Input Node Values
                bam.Learn();
            }

            for (var i = 0; i < patterns; i++)
            {
                upperbam.SetNodeValue(upperdata[i]);
                upperbam.Learn();
            }


            // Run the BAM
            for (var i = 0; i < patterns; i++)
            {
                bam.SetNodeValue(data[i]);                    // Load Input Node Values

                bam.Run();

                Console.WriteLine("Pattern: {0}", i);

                for (int j = 0; j < outputs; j++)              // Print results
                {
                    Console.WriteLine("     BAM output: {0}   Desired output: {1}",
                                      bam.GetNodeValue(j).ToString("F3"),
                                      data[i].getOut(j).ToString("F3"));
                }
            }               // for i

            // run the second bam
            for (var i = 0; i < patterns; i++)
            {
                upperbam.SetNodeValue(upperdata[i]);                    // Load Input Node Values

                upperbam.Run();

                Console.WriteLine("Pattern: {0}", i + 5);

                for (var j = 0; j < outputs; j++)              // Print results
                {
                    Console.WriteLine("     BAM output: {0}   Desired output: {1}",
                                      upperbam.GetNodeValue(j).ToString("F3"),
                                      upperdata[i].getOut(j).ToString("F3"));
                }
            }               // for i

//			CreateInputPatterns();
//			CreateOutputValues();
//
//			// Create BAM
//			BAMNetwork bam = new BAMNetwork(35, 10);
//
//			// Train the BAM
//			for (int i=0; i<10; i++)     // Add All Patterns to the BAM
//			{
//				StringPattern pattern = new StringPattern( PatternStrings[i], OutputValues[i] );
//				bam.setNodeValue(pattern);    // Load Input Node Values
//				bam.Learn(0);
//			}
//
//			// Run the BAM
//			for (int i=0; i<10; i++)
//			{
//				StringPattern pattern = new StringPattern( PatternStrings[i], OutputValues[i] );
//				bam.setNodeValue(pattern);    // Load Input Node Values
//
//				bam.Run(0);
//
//				Console.WriteLine( "Pattern: {0}",  i );
//				for (int j=0; j<10; j++)  // Print results
//				{
//					Console.WriteLine( "BAM Output: {0}   Desired Output: {1}", bam.getNodeValue(j).ToString("F3"), OutputValues[i][j].ToString("F3") );
//				}
//			}   // for i

            Console.Read();
        }