private Net.Network.Network GetLoadedHotGymHierarchy() { Parameters p = NetworkTestHarness.GetParameters(); p = p.Union(NetworkTestHarness.GetNetworkDemoTestEncoderParams()); p.SetParameterByKey(Parameters.KEY.RANDOM, new MersenneTwister(42)); Net.Network.Network network = Net.Network.Network.Create("test network", p) .Add(Net.Network.Network.CreateRegion("r1") .Add(Net.Network.Network.CreateLayer("2", p) .Add(Anomaly.Create()) .Add(new TemporalMemory())) .Add(Net.Network.Network.CreateLayer("3", p) .Add(new SpatialPooler())) .Connect("2", "3")) .Add(Net.Network.Network.CreateRegion("r2") .Add(Net.Network.Network.CreateLayer("1", p) .AlterParameter(Parameters.KEY.AUTO_CLASSIFY, true) .Add(new TemporalMemory()) .Add(new SpatialPooler()) .Add(FileSensor.Create(Net.Network.Sensor.FileSensor.Create, SensorParams.Create( SensorParams.Keys.Path, "", ResourceLocator.Path("rec-center-hourly.csv")))))) .Connect("r1", "r2"); return(network); }
public void TestAutomaticClose() { Parameters p = NetworkTestHarness.GetParameters(); p = p.Union(NetworkTestHarness.GetDayDemoTestEncoderParams()); p.SetParameterByKey(Parameters.KEY.RANDOM, new MersenneTwister(42)); Net.Network.Network n = Net.Network.Network.Create("test network", p) .Add(Net.Network.Network.CreateRegion("r1") .Add(Net.Network.Network.CreateLayer <IInference>("4", p) .Add((MultiEncoder)MultiEncoder.GetBuilder().Name("").Build()))); //.Close(); // Not necessary due to implicit call during start() or compute() Region r1 = n.Lookup("r1"); r1.Start(); Assert.IsTrue(r1.IsClosed()); try { r1.Add(Net.Network.Network.CreateLayer <IInference>("5", p)); Assert.Fail(); } catch (Exception e) { Assert.IsTrue(e.GetType().IsAssignableFrom(typeof(InvalidOperationException))); Assert.AreEqual("Cannot add Layers when Region has already been closed.", e.Message); } }
public void TestAdd() { Parameters p = NetworkTestHarness.GetParameters(); p = p.Union(NetworkTestHarness.GetDayDemoTestEncoderParams()); p.SetParameterByKey(Parameters.KEY.RANDOM, new MersenneTwister(42)); Net.Network.Network n = Net.Network.Network.Create("test network", p) .Add(Net.Network.Network.CreateRegion("r1") .Add(Net.Network.Network.CreateLayer <IInference>("4", p) .Add((MultiEncoder)MultiEncoder.GetBuilder().Name("").Build()))); Region r1 = n.Lookup("r1"); ILayer layer4 = r1.Lookup("4"); Assert.IsNotNull(layer4); Assert.AreEqual("r1:4", layer4.GetName()); try { r1.Add(Net.Network.Network.CreateLayer <IInference>("4", p)); Assert.Fail(); } catch (Exception e) { Assert.IsInstanceOfType(e, typeof(InvalidOperationException)); Assert.AreEqual("A Layer with the name: 4 has already been added to this Region.", e.Message); } }
public void TestEncoderPassesUpToTopLayer() { Parameters p = NetworkTestHarness.GetParameters(); p = p.Union(NetworkTestHarness.GetDayDemoTestEncoderParams()); p.SetParameterByKey(Parameters.KEY.RANDOM, new MersenneTwister(42)); p.SetParameterByKey(Parameters.KEY.ANOMALY_KEY_MODE, Anomaly.Mode.PURE); Net.Network.Network n = Net.Network.Network.Create("test network", p) .Add(Net.Network.Network.CreateRegion("r1") .Add(Net.Network.Network.CreateLayer <IInference>("1", p) .AlterParameter(Parameters.KEY.AUTO_CLASSIFY, true)) .Add(Net.Network.Network.CreateLayer <IInference>("2", p) .Add(Anomaly.Create(p))) .Add(Net.Network.Network.CreateLayer <IInference>("3", p) .Add(new TemporalMemory())) .Add(Net.Network.Network.CreateLayer <IInference>("4", p) .Add(new SpatialPooler()) .Add((MultiEncoder)MultiEncoder.GetBuilder().Name("").Build()))); Region r1 = n.Lookup("r1"); r1.Connect("1", "2").Connect("2", "3").Connect("3", "4"); Assert.IsNotNull(r1.Lookup("1").GetEncoder()); }
private Net.Network.Network GetLoadedDayOfWeekNetwork() { Parameters p = NetworkTestHarness.GetParameters().Copy(); p = p.Union(NetworkTestHarness.GetDayDemoTestEncoderParams()); p.SetParameterByKey(Parameters.KEY.RANDOM, new XorshiftRandom(42)); Sensor <ObservableSensor <string[]> > sensor = Sensor <ObservableSensor <string[]> > .Create( ObservableSensor <string[]> .Create, SensorParams.Create(SensorParams.Keys.Obs, new object[] { "name", PublisherSupplier.GetBuilder() .AddHeader("dayOfWeek") .AddHeader("number") .AddHeader("B").Build() })); Net.Network.Network network = Net.Network.Network.Create("test network", p) .Add(Net.Network.Network.CreateRegion("r1") .Add(Net.Network.Network.CreateLayer("1", p) .AlterParameter(Parameters.KEY.AUTO_CLASSIFY, true) .Add(Anomaly.Create()) .Add(new TemporalMemory()) .Add(new SpatialPooler()) .Add(sensor))); return(network); }
public void TestRegionSerialisation() { Net.Network.Network n = new Net.Network.Network("network", Parameters.Empty()); Region r = new Region("myRegion", n); IPersistenceAPI pa = Persistence.Get(new SerialConfig(null, SerialConfig.SERIAL_TEST_DIR)); byte[] bytes = pa.Serializer().Serialize(r); Region r2 = pa.Serializer().Deserialize <Region>(bytes); Assert.AreEqual(r, r2); }
public void TestAlgorithmRepetitionDetection() { Parameters p = NetworkTestHarness.GetParameters(); p = p.Union(NetworkTestHarness.GetDayDemoTestEncoderParams()); p.SetParameterByKey(Parameters.KEY.RANDOM, new MersenneTwister(42)); // -- No overlap Net.Network.Network n = Net.Network.Network.Create("test network", p) .Add(Net.Network.Network.CreateRegion("r1") .Add(Net.Network.Network.CreateLayer <IInference>("2/3", p) .AlterParameter(Parameters.KEY.AUTO_CLASSIFY, true) .Add(new TemporalMemory())) .Add(Net.Network.Network.CreateLayer <IInference>("4", p) .Add(Sensor <FileSensor> .Create(FileSensor.Create, SensorParams.Create( SensorParams.Keys.Path, "", ResourceLocator.Path(typeof(Resources), "days-of-week.Csv")))) .Add(new SpatialPooler())) .Connect("2/3", "4")); Region r = n.Lookup("r1"); Assert.IsTrue(r.layersDistinct); LayerMask flags = r.flagAccumulator; flags ^= LayerMask.SpatialPooler; flags ^= LayerMask.TemporalMemory; flags ^= LayerMask.ClaClassifier; Assert.AreEqual(LayerMask.None, flags); Assert.AreEqual(r.Lookup("2/3").GetMask(), (LayerMask.TemporalMemory | LayerMask.ClaClassifier)); Assert.AreEqual(r.Lookup("4").GetMask(), LayerMask.SpatialPooler); // -- Test overlap detection n = Net.Network.Network.Create("test network", p) .Add(Net.Network.Network.CreateRegion("r1") .Add(Net.Network.Network.CreateLayer <IInference>("2/3", p) .AlterParameter(Parameters.KEY.AUTO_CLASSIFY, true) .Add(new TemporalMemory())) .Add(Net.Network.Network.CreateLayer <IInference>("4", p) .Add(Sensor <FileSensor> .Create(FileSensor.Create, SensorParams.Create( SensorParams.Keys.Path, "", ResourceLocator.Path(typeof(Resources), "days-of-week.Csv")))) .Add(new TemporalMemory()) .Add(new SpatialPooler())) .Connect("2/3", "4")); r = n.Lookup("r1"); Assert.IsFalse(r.layersDistinct); Assert.AreEqual(r.Lookup("2/3").GetMask(), (LayerMask.TemporalMemory | LayerMask.ClaClassifier)); Assert.AreEqual(r.Lookup("4").GetMask(), (LayerMask.SpatialPooler | LayerMask.TemporalMemory)); }
public void TestHierarchicalNetwork() { Net.Network.Network network = GetLoadedHotGymHierarchy(); try { SerialConfig config = new SerialConfig("testSerializeHierarchy", SerialConfig.SERIAL_TEST_DIR); IPersistenceAPI api = Persistence.Get(config); api.Store(network); } catch (Exception e) { Console.WriteLine(e); Assert.Fail(); } }
public void TestIsLearn() { Parameters p = NetworkTestHarness.GetParameters().Copy(); p = p.Union(NetworkTestHarness.GetDayDemoTestEncoderParams()); p.SetParameterByKey(Parameters.KEY.COLUMN_DIMENSIONS, new int[] { 30 }); p.SetParameterByKey(Parameters.KEY.SYN_PERM_INACTIVE_DEC, 0.1); p.SetParameterByKey(Parameters.KEY.SYN_PERM_ACTIVE_INC, 0.1); p.SetParameterByKey(Parameters.KEY.SYN_PERM_TRIM_THRESHOLD, 0.05); p.SetParameterByKey(Parameters.KEY.SYN_PERM_CONNECTED, 0.4); p.SetParameterByKey(Parameters.KEY.MAX_BOOST, 10.0); p.SetParameterByKey(Parameters.KEY.DUTY_CYCLE_PERIOD, 7); p.SetParameterByKey(Parameters.KEY.RANDOM, new MersenneTwister(42)); p.SetParameterByKey(Parameters.KEY.ANOMALY_KEY_MODE, Anomaly.Mode.PURE); Net.Network.Network n = Net.Network.Network.Create("test network", p) .Add(Net.Network.Network.CreateRegion("r1") .Add(Net.Network.Network.CreateLayer <IInference>("1", p) .AlterParameter(Parameters.KEY.AUTO_CLASSIFY, true)) .Add(Net.Network.Network.CreateLayer <IInference>("2", p) .Add(Anomaly.Create(p))) .Add(Net.Network.Network.CreateLayer <IInference>("3", p) .Add(new TemporalMemory())) .Add(Net.Network.Network.CreateLayer <IInference>("4", p) .Add(new SpatialPooler()) .Add((MultiEncoder)MultiEncoder.GetBuilder().Name("").Build())) .Connect("1", "2") .Connect("2", "3") .Connect("3", "4")); n.Lookup("r1").Close(); n.SetLearn(false); Assert.IsFalse(n.IsLearn()); Region r1 = n.Lookup("r1"); Assert.IsFalse(n.IsLearn()); ILayer layer = r1.GetTail(); Assert.IsFalse(layer.SetIsLearn()); while (layer.GetNext() != null) { layer = layer.GetNext(); Assert.IsFalse(layer.SetIsLearn()); } }
public void TestThreadedPublisher_SpatialPoolerNetwork() { Net.Network.Network network = CreateAndRunTestSpatialPoolerNetwork(0, 6); ILayer l = network.Lookup("r1").Lookup("1"); Connections cn = l.GetConnections(); SerialConfig config = new SerialConfig("testThreadedPublisher_SpatialPoolerNetwork", SerialConfig.SERIAL_TEST_DIR); IPersistenceAPI api = Persistence.Get(config); byte[] bytes = api.Write(cn); //Serialize above Connections for comparison with same run but unserialized below... Connections serializedConnections = api.Read <Connections>(bytes); Net.Network.Network network2 = CreateAndRunTestSpatialPoolerNetwork(0, 6); ILayer l2 = network2.Lookup("r1").Lookup("1"); Connections newCons = l2.GetConnections(); //Compare the two Connections (both serialized and regular runs) - should be equal bool b = newCons.IsDeepEqual(serializedConnections); DeepCompare(newCons, serializedConnections); Assert.IsTrue(b); }
public void TestThreadedPublisher_TemporalMemoryNetwork() { Net.Network.Network network = CreateAndRunTestTemporalMemoryNetwork(); ILayer l = network.Lookup("r1").Lookup("1"); Connections cn = l.GetConnections(); SerialConfig config = new SerialConfig("testThreadedPublisher_TemporalMemoryNetwork", SerialConfig.SERIAL_TEST_DIR); IPersistenceAPI api = Persistence.Get(config); byte[] bytes = api.Write(cn); Connections serializedConnections = api.Read <Connections>(bytes); Net.Network.Network network2 = CreateAndRunTestTemporalMemoryNetwork(); ILayer l2 = network2.Lookup("r1").Lookup("1"); Connections newCons = l2.GetConnections(); newCons.ShouldDeepEqual(serializedConnections); bool b = newCons.IsDeepEqual(serializedConnections); DeepCompare(newCons, serializedConnections); Assert.IsTrue(b); }
public void TestSearchAndListPreviousCheckPoint() { Parameters p = NetworkTestHarness.GetParameters(); Net.Network.Network network = Net.Network.Network.Create("test network", p) .Add(Net.Network.Network.CreateRegion("r1") .Add(Net.Network.Network.CreateLayer("1", p) .Add(Anomaly.Create()) .Add(new TemporalMemory()) .Add(new SpatialPooler()))); IPersistenceAPI pa = Persistence.Get(new SerialConfig(null, SerialConfig.SERIAL_TEST_DIR)); ArrayUtils.Range(0, 5).ToList().ForEach(i => ((Persistence.PersistenceAccess)pa).GetCheckPointFunction <Net.Network.Network>(network)(network)); Dictionary <string, DateTime> checkPointFiles = pa.ListCheckPointFiles(); Assert.IsTrue(checkPointFiles.Count > 4); Assert.AreEqual(checkPointFiles.ElementAt(checkPointFiles.Count - 2).Key, pa.GetPreviousCheckPoint(checkPointFiles.ElementAt(checkPointFiles.Count - 1))); }
private Net.Network.Network CreateAndRunTestTemporalMemoryNetwork() { Publisher manual = Publisher.GetBuilder() .AddHeader("dayOfWeek") .AddHeader("darr") .AddHeader("B").Build(); Sensor <ObservableSensor <String[]> > sensor = Sensor <ObservableSensor <string[]> > .Create( ObservableSensor <string[]> .Create, SensorParams.Create(SensorParams.Keys.Obs, new Object[] { "name", manual })); Parameters p = GetParameters(); Map <String, Map <String, Object> > settings = NetworkTestHarness.SetupMap( null, // map 20, // n 0, // w 0, // min 0, // max 0, // radius 0, // resolution null, // periodic null, // clip true, // forced "dayOfWeek", // fieldName "darr", // fieldType (dense array as opposed to sparse array or "sarr") "SDRPassThroughEncoder"); // encoderType p.SetParameterByKey(Parameters.KEY.FIELD_ENCODING_MAP, settings); Net.Network.Network network = Net.Network.Network.Create("test network", p) .Add(Net.Network.Network.CreateRegion("r1") .Add(Net.Network.Network.CreateLayer("1", p) .Add(new TemporalMemory()) .Add(sensor))); network.Start(); network.Observe().Subscribe(i => { }, e => Console.WriteLine(e)); // new Subscriber<Inference>() { // @Override public void onCompleted() { } // @Override public void onError(Throwable e) { e.printStackTrace(); } // @Override public void onNext(Inference i) { } //}); int[] input1 = new int[] { 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0 }; int[] input2 = new int[] { 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }; int[] input3 = new int[] { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0 }; int[] input4 = new int[] { 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0 }; int[] input5 = new int[] { 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0 }; int[] input6 = new int[] { 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1 }; int[] input7 = new int[] { 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0 }; int[][] inputs = { input1, input2, input3, input4, input5, input6, input7 }; // Run until TemporalMemory is "warmed up". int timeUntilStable = 602; for (int j = 0; j < timeUntilStable; j++) { for (int i = 0; i < inputs.Length; i++) { manual.OnNext(Arrays.ToString(inputs[i])); } } manual.OnComplete(); ILayer l = network.Lookup("r1").Lookup("1"); try { l.GetLayerThread().Wait(); Console.WriteLine(Arrays.ToString(SDR.AsCellIndices(l.GetConnections().GetActiveCells()))); } catch (Exception e) { Assert.AreEqual(typeof(ThreadInterruptedException), e.GetType()); } return(network); }
public void Test2LayerAssemblyWithSensor() { Parameters p = NetworkTestHarness.GetParameters(); p = p.Union(NetworkTestHarness.GetDayDemoTestEncoderParams()); p.SetParameterByKey(Parameters.KEY.RANDOM, new MersenneTwister(42)); Net.Network.Network n = Net.Network.Network.Create("test network", p) .Add(Net.Network.Network.CreateRegion("r1") .Add(Net.Network.Network.CreateLayer <IInference>("2/3", p) .AlterParameter(Parameters.KEY.AUTO_CLASSIFY, true) .Add(new TemporalMemory())) .Add(Net.Network.Network.CreateLayer <IInference>("4", p) .Add(Sensor <FileSensor> .Create(FileSensor.Create, SensorParams.Create( SensorParams.Keys.Path, "", ResourceLocator.Path(typeof(Resources), "days-of-week.Csv")))) .Add(new SpatialPooler())) .Connect("2/3", "4")); int[][] inputs = new int[7][]; inputs[0] = new[] { 1, 1, 0, 0, 0, 0, 0, 1 }; inputs[1] = new[] { 1, 1, 1, 0, 0, 0, 0, 0 }; inputs[2] = new[] { 0, 1, 1, 1, 0, 0, 0, 0 }; inputs[3] = new[] { 0, 0, 1, 1, 1, 0, 0, 0 }; inputs[4] = new[] { 0, 0, 0, 1, 1, 1, 0, 0 }; inputs[5] = new[] { 0, 0, 0, 0, 1, 1, 1, 0 }; inputs[6] = new[] { 0, 0, 0, 0, 0, 1, 1, 1 }; Region r1 = n.Lookup("r1"); // Observe the top layer r1.Lookup("4").Observe().Subscribe( // next i => { Console.WriteLine("onNext() called (4)"); Assert.IsTrue(Arrays.AreEqual(inputs[idx0++], i.GetEncoding())); }, //error e => { Console.WriteLine(e); }, //completed () => { Console.WriteLine("onCompleted() called (4)"); } ); //r1.Lookup("4").Observe().Subscribe(new Subscriber<Inference>() //{ // public void onCompleted() { } // public void onError(Throwable e) { e.printStackTrace(); } // public void onNext(Inference i) // { // Assert.IsTrue(Arrays.equals(inputs[idx0++], i.GetEncoding())); // } //}); // Observe the bottom layer r1.Lookup("2/3").Observe().Subscribe( // next i => { Console.WriteLine("onNext() called (2/3)"); Assert.IsTrue(Arrays.AreEqual(inputs[idx1++], i.GetEncoding())); }, //error e => { Console.WriteLine(e); }, //completed () => { Console.WriteLine("onCompleted() called (2/3)"); } ); //r1.Lookup("2/3").Observe().Subscribe(new Subscriber<Inference>() { // public void onCompleted() { } // public void onError(Throwable e) { e.printStackTrace(); } // public void onNext(Inference i) // { // Assert.IsTrue(Arrays.equals(inputs[idx1++], i.GetEncoding())); // } //}); // Observe the Region output r1.Observe().Subscribe( // next i => { Console.WriteLine("onNext() called (out)"); Assert.IsTrue(Arrays.AreEqual(inputs[idx2++], i.GetEncoding())); }, //error e => { Console.WriteLine(e); }, //completed () => { Console.WriteLine("onCompleted() called (out)"); } ); //r1.Observe().Subscribe(new Subscriber<Inference>() { // public void onCompleted() { } // public void onError(Throwable e) { e.printStackTrace(); } // public void onNext(Inference i) // { // Assert.IsTrue(Arrays.equals(inputs[idx2++], i.GetEncoding())); // } //}); r1.Start(); try { r1.Lookup("4").GetLayerThread().Wait(); } catch (Exception e) { Console.WriteLine(e); } Assert.AreEqual(7, idx0); Assert.AreEqual(7, idx1); Assert.AreEqual(7, idx2); }
public void TestMultiLayerAssemblyNoSensor() { Parameters p = NetworkTestHarness.GetParameters().Copy(); p = p.Union(NetworkTestHarness.GetDayDemoTestEncoderParams()); p.SetParameterByKey(Parameters.KEY.COLUMN_DIMENSIONS, new int[] { 30 }); p.SetParameterByKey(Parameters.KEY.SYN_PERM_INACTIVE_DEC, 0.1); p.SetParameterByKey(Parameters.KEY.SYN_PERM_ACTIVE_INC, 0.1); p.SetParameterByKey(Parameters.KEY.SYN_PERM_TRIM_THRESHOLD, 0.05); p.SetParameterByKey(Parameters.KEY.SYN_PERM_CONNECTED, 0.4); p.SetParameterByKey(Parameters.KEY.MAX_BOOST, 10.0); p.SetParameterByKey(Parameters.KEY.DUTY_CYCLE_PERIOD, 7); p.SetParameterByKey(Parameters.KEY.RANDOM, new MersenneTwister(42)); p.SetParameterByKey(Parameters.KEY.ANOMALY_KEY_MODE, Anomaly.Mode.PURE); Net.Network.Network n = Net.Network.Network.Create("test network", p) .Add(Net.Network.Network.CreateRegion("r1") .Add(Net.Network.Network.CreateLayer <IInference>("1", p) .AlterParameter(Parameters.KEY.AUTO_CLASSIFY, true)) .Add(Net.Network.Network.CreateLayer <IInference>("2", p) .Add(Anomaly.Create(p))) .Add(Net.Network.Network.CreateLayer <IInference>("3", p) .Add(new TemporalMemory())) .Add(Net.Network.Network.CreateLayer <IInference>("4", p) .Add(new SpatialPooler()) .Add((MultiEncoder)MultiEncoder.GetBuilder().Name("").Build())) .Connect("1", "2") .Connect("2", "3") .Connect("3", "4")); Region r1 = n.Lookup("r1"); r1.Lookup("3").Using(r1.Lookup("4").GetConnections()); // How to share Connections object between Layers //r1.Observe().Subscribe(new Subscriber<Inference>() //{ // public void onCompleted() { } // public void onError(Throwable e) { e.printStackTrace(); } // public void onNext(Inference i) // { // // UNCOMMENT TO VIEW STABILIZATION OF PREDICTED FIELDS // System.Out.println("Day: " + r1.GetInput() + " - predictive cells: " + i.GetPreviousPredictiveCells() + // " - " + Arrays.toString(i.GetFeedForwardSparseActives()) + " - " + // ((int)Math.Rint(((Number)i.GetClassification("dayOfWeek").GetMostProbableValue(1)).doubleValue()))); // } //}); const int NUM_CYCLES = 400; const int INPUT_GROUP_COUNT = 7; // Days of Week Map <String, Object> multiInput = new Map <string, object>(); for (int i = 0; i < NUM_CYCLES; i++) { for (double j = 0; j < INPUT_GROUP_COUNT; j++) { multiInput.Add("dayOfWeek", j); r1.Compute(multiInput); } r1.Reset(); } r1.SetLearn(false); r1.Reset(); // Test that we get proper output after prediction stabilization //r1.Observe().Subscribe(new Subscriber<Inference>() //{ // public void onCompleted() { } // public void onError(Throwable e) { e.printStackTrace(); } // public void onNext(Inference i) // { // int nextDay = ((int)Math.Rint(((Number)i.GetClassification("dayOfWeek").GetMostProbableValue(1)).doubleValue())); // Assert.AreEqual(6, nextDay); // } //}); multiInput.Add("dayOfWeek", 5.0); r1.Compute(multiInput); }
public void TestHalt() { Parameters p = NetworkTestHarness.GetParameters(); p = p.Union(NetworkTestHarness.GetDayDemoTestEncoderParams()); p.SetParameterByKey(Parameters.KEY.RANDOM, new MersenneTwister(42)); p.SetParameterByKey(Parameters.KEY.ANOMALY_KEY_MODE, Anomaly.Mode.PURE); Net.Network.Network n = Net.Network.Network.Create("test network", p) .Add(Net.Network.Network.CreateRegion("r1") .Add(Net.Network.Network.CreateLayer <IInference>("1", p) .AlterParameter(Parameters.KEY.AUTO_CLASSIFY, true)) .Add(Net.Network.Network.CreateLayer <IInference>("2", p) .Add(Anomaly.Create(p))) .Add(Net.Network.Network.CreateLayer <IInference>("3", p) .Add(new TemporalMemory())) .Add(Net.Network.Network.CreateLayer <IInference>("4", p) .Add(Sensor <FileSensor> .Create(FileSensor.Create, SensorParams.Create( SensorParams.Keys.Path, "", ResourceLocator.Path(typeof(Resources), "days-of-week.csv")))) .Add(new SpatialPooler())) .Connect("1", "2") .Connect("2", "3") .Connect("3", "4")); Region r1 = n.Lookup("r1"); int seq = 0; r1.Observe().Subscribe( // next i => { if (seq == 2) { isHalted = true; } seq++; }, //error e => { Console.WriteLine(e); }, //completed () => { Console.WriteLine("onCompleted() called"); } ); //r1.Observe().Subscribe(new Subscriber<Inference>() { // int seq = 0; // public void onCompleted() // { // // System.Out.println("onCompleted() called"); // } // public void onError(Throwable e) { e.printStackTrace(); } // public void onNext(Inference i) // { // if (seq == 2) // { // isHalted = true; // } // seq++; // // System.Out.println("output: " + i.GetSDR()); // } //}); new Thread(() => { while (!isHalted) { try { Thread.Sleep(1); } catch (Exception e) { Console.WriteLine(e); } } r1.Halt(); }).Start(); // (new Thread() // { // public void run() // { // while (!isHalted) // { // try { Thread.Sleep(1); } catch (Exception e) { e.printStackTrace(); } // } // r1.Halt(); // } //}).Start(); r1.Start(); try { r1.Lookup("4").GetLayerThread().Wait(); } catch (Exception e) { Console.WriteLine(e); } }
private Net.Network.Network CreateAndRunTestSpatialPoolerNetwork(int start, int runTo) { Publisher manual = Publisher.GetBuilder() .AddHeader("dayOfWeek") .AddHeader("darr") .AddHeader("B") .Build(); Sensor <ObservableSensor <string[]> > sensor = Sensor <ObservableSensor <String[]> > .Create( ObservableSensor <string[]> .Create, SensorParams.Create(SensorParams.Keys.Obs, new Object[] { "name", manual })); Parameters p = NetworkTestHarness.GetParameters().Copy(); p.SetParameterByKey(Parameters.KEY.RANDOM, new XorshiftRandom(42)); Map <String, Map <String, Object> > settings = NetworkTestHarness.SetupMap( null, // map 8, // n 0, // w 0, // min 0, // max 0, // radius 0, // resolution null, // periodic null, // clip true, // forced "dayOfWeek", // fieldName "darr", // fieldType (dense array as opposed to sparse array or "sarr") "SDRPassThroughEncoder"); // encoderType p.SetParameterByKey(Parameters.KEY.FIELD_ENCODING_MAP, settings); Net.Network.Network network = Net.Network.Network.Create("test network", p) .Add(Net.Network.Network.CreateRegion("r1") .Add(Net.Network.Network.CreateLayer("1", p) .Add(new SpatialPooler()) .Add(sensor))); network.Start(); int[][] inputs = new int[7][]; inputs[0] = new int[] { 1, 1, 0, 0, 0, 0, 0, 1 }; inputs[1] = new int[] { 1, 1, 1, 0, 0, 0, 0, 0 }; inputs[2] = new int[] { 0, 1, 1, 1, 0, 0, 0, 0 }; inputs[3] = new int[] { 0, 0, 1, 1, 1, 0, 0, 0 }; inputs[4] = new int[] { 0, 0, 0, 1, 1, 1, 0, 0 }; inputs[5] = new int[] { 0, 0, 0, 0, 1, 1, 1, 0 }; inputs[6] = new int[] { 0, 0, 0, 0, 0, 1, 1, 1 }; int[] expected0 = new int[] { 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 }; int[] expected1 = new int[] { 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1 }; int[] expected2 = new int[] { 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1 }; int[] expected3 = new int[] { 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }; int[] expected4 = new int[] { 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 }; int[] expected5 = new int[] { 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 }; int[] expected6 = new int[] { 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1 }; int[][] expecteds = new int[][] { expected0, expected1, expected2, expected3, expected4, expected5, expected6 }; //TestObserver<Inference> tester; int test = 0; network.Observe().Subscribe( spatialPoolerOutput => { Console.WriteLine(test + " E: " + Arrays.ToString(expecteds[test]) + " -- " + "A: " + Arrays.ToString(spatialPoolerOutput.GetSdr())); Assert.IsTrue(Arrays.AreEqual(expecteds[test], spatialPoolerOutput.GetSdr())); test++; }, e => { Console.WriteLine(e); }, () => { }); // Now push some fake data through so that "onNext" is called above for (int i = start; i <= runTo; i++) { manual.OnNext(Arrays.ToString(inputs[i])); } manual.OnComplete(); try { network.Lookup("r1").Lookup("1").GetLayerThread().Wait(); } catch (Exception e) { Console.WriteLine(e); } //checkObserver(tester); return(network); }
public void TestSerializedUnStartedNetworkRuns() { const int NUM_CYCLES = 600; const int INPUT_GROUP_COUNT = 7; // Days of Week Net.Network.Network network = GetLoadedDayOfWeekNetwork(); SerialConfig config = new SerialConfig("testSerializedUnStartedNetworkRuns", SerialConfig.SERIAL_TEST_DIR); IPersistenceAPI api = Persistence.Get(config); api.Store(network); //Serialize above Connections for comparison with same run but unserialized below... Net.Network.Network serializedNetwork = api.Load(); Assert.AreEqual(serializedNetwork, network); DeepCompare(network, serializedNetwork); int cellsPerCol = (int)serializedNetwork.GetParameters().GetParameterByKey(Parameters.KEY.CELLS_PER_COLUMN); serializedNetwork.Observe().Subscribe( inf => { dayOfWeekPrintout(inf, cellsPerCol); }, e => { Console.WriteLine(e); }, () => { }); // new Observer<Inference>() { // @Override public void onCompleted() { } // @Override public void onError(Throwable e) { e.printStackTrace(); } // @Override // public void onNext(Inference inf) // { // /** see {@link #createDayOfWeekInferencePrintout()} */ // dayOfWeekPrintout.apply(inf, cellsPerCol); // } //}); Publisher pub = serializedNetwork.GetPublisher(); serializedNetwork.Start(); int cycleCount = 0; for (; cycleCount < NUM_CYCLES; cycleCount++) { for (double j = 0; j < INPUT_GROUP_COUNT; j++) { pub.OnNext("" + j); } serializedNetwork.Reset(); if (cycleCount == 284) { break; } } pub.OnComplete(); try { Region r1 = serializedNetwork.Lookup("r1"); r1.Lookup("1").GetLayerThread().Wait(); } catch (Exception e) { Console.WriteLine(e); Assert.Fail(); } }
public void TestCopy() { Map <string, NamedTuple> classifierInput = new Map <string, NamedTuple>(); NamedTuple classifiers = new NamedTuple(new[] { "one", "two" }, 1, 2); object layerInput = new object(); int[] sdr = new[] { 20 }; int[] encoding = new int[40]; int[] activeColumns = new int[25]; int[] sparseActives = new int[2]; HashSet <Cell> activeCells = new HashSet <Cell>(); activeCells.Add(new Cell(new Column(4, 0), 1)); HashSet <Cell> previousPrediction = new HashSet <Cell>(); previousPrediction.Add(new Cell(new Column(4, 0), 2)); HashSet <Cell> currentPrediction = new HashSet <Cell>(); currentPrediction.Add(new Cell(new Column(4, 0), 3)); Classification <object> classification = new Classification <object>(); double anomalyScore = 0.48d; object customObject = new Net.Network.Network("MI Network", NetworkTestHarness.GetNetworkDemoTestEncoderParams()); ManualInput mi = new ManualInput() .SetClassifierInput(classifierInput) .SetLayerInput(layerInput) .SetSdr(sdr) .SetEncoding(encoding) .SetFeedForwardActiveColumns(activeColumns) .SetFeedForwardSparseActives(sparseActives) .SetPredictiveCells(previousPrediction) .SetPredictiveCells(currentPrediction) // last prediction internally becomes previous .SetActiveCells(activeCells) .SetClassifiers(classifiers) .StoreClassification("foo", classification) .SetAnomalyScore(anomalyScore) .SetCustomObject(customObject); ManualInput copy = mi.Copy(); Assert.IsTrue(copy.GetClassifierInput().DictEquals(classifierInput)); Assert.IsFalse(copy.GetClassifierInput() == classifierInput); Assert.IsTrue(copy.GetLayerInput() == layerInput); Assert.IsTrue(Arrays.AreEqual(copy.GetSdr(), sdr)); Assert.IsFalse(copy.GetSdr() == sdr); Assert.IsTrue(Arrays.AreEqual(copy.GetEncoding(), encoding)); Assert.IsFalse(copy.GetEncoding() == encoding); Assert.IsTrue(Arrays.AreEqual(copy.GetFeedForwardActiveColumns(), activeColumns)); Assert.IsFalse(copy.GetFeedForwardActiveColumns() == activeColumns); Assert.IsTrue(Arrays.AreEqual(copy.GetFeedForwardSparseActives(), sparseActives)); Assert.IsFalse(copy.GetFeedForwardSparseActives() == sparseActives); Assert.IsTrue(copy.GetPredictiveCells().SetEquals(currentPrediction)); Assert.IsFalse(copy.GetPredictiveCells() == currentPrediction); Assert.IsTrue(copy.GetActiveCells().SetEquals(activeCells)); Assert.IsFalse(copy.GetActiveCells() == activeCells); Assert.IsTrue(copy.GetPreviousPredictiveCells().SetEquals(previousPrediction)); Assert.IsFalse(copy.GetPreviousPredictiveCells() == previousPrediction); Assert.IsTrue(copy.GetClassifiers().Equals(classifiers)); Assert.IsFalse(copy.GetClassifiers() == classifiers); Assert.IsTrue(copy.GetClassification("foo").Equals(classification)); Assert.AreEqual(copy.GetAnomalyScore(), anomalyScore, 0.0); // zero deviation Assert.AreEqual(copy.GetCustomObject(), customObject); }
public void TestThreadedPublisher() { Publisher manual = Publisher.GetBuilder() .AddHeader("dayOfWeek") .AddHeader("darr") .AddHeader("B").Build(); Sensor <ObservableSensor <string[]> > sensor = Sensor <ObservableSensor <string[]> > .Create( ObservableSensor <string[]> .Create, SensorParams.Create(SensorParams.Keys.Obs, new Object[] { "name", manual })); Parameters p = GetParameters(); Map <String, Map <String, Object> > settings = NetworkTestHarness.SetupMap( null, // map 20, // n 0, // w 0, // min 0, // max 0, // radius 0, // resolution null, // periodic null, // clip true, // forced "dayOfWeek", // fieldName "darr", // fieldType (dense array as opposed to sparse array or "sarr") "SDRPassThroughEncoder"); // encoderType p.SetParameterByKey(Parameters.KEY.FIELD_ENCODING_MAP, settings); Net.Network.Network network = Net.Network.Network.Create("test network", p) .Add(Net.Network.Network.CreateRegion("r1") .Add(Net.Network.Network.CreateLayer <IInference>("1", p) .Add(new TemporalMemory()) .Add(sensor))); network.Start(); network.Observe().Subscribe(Observer.Create <IInference>( output => { }, Console.WriteLine, () => { } )); int[] input1 = new int[] { 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0 }; int[] input2 = new int[] { 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }; int[] input3 = new int[] { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0 }; int[] input4 = new int[] { 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0 }; int[] input5 = new int[] { 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0 }; int[] input6 = new int[] { 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1 }; int[] input7 = new int[] { 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0 }; int[][] inputs = { input1, input2, input3, input4, input5, input6, input7 }; // Now push some warm up data through so that "onNext" is called above int timeUntilStable = 602; for (int j = 0; j < timeUntilStable; j++) { for (int i = 0; i < inputs.Length; i++) { manual.OnNext(Arrays.ToString(inputs[i])); } } manual.OnComplete(); ILayer l = network.Lookup("r1").Lookup("1"); try { l.GetLayerThread().Wait(); ComputeCycle cc = l.GetInference().GetComputeCycle(); TEST_AGGREGATION[TM_NAPI] = SDR.AsCellIndices(cc.activeCells); } catch (Exception e) { Debug.WriteLine(e.ToString()); Assert.IsInstanceOfType(e, typeof(ThreadAbortException)); } }