public void BatchDivisionTest2() { // Sequential float[,] x = Enumerable.Range(0, 20000 * 784).Select(_ => ThreadSafeRandom.NextUniform(100)).ToArray().AsSpan().AsMatrix(20000, 784), y = Enumerable.Range(0, 20000 * 10).Select(_ => ThreadSafeRandom.NextUniform(100)).ToArray().AsSpan().AsMatrix(20000, 10); BatchesCollection batches = BatchesCollection.From((x, y), 1547); HashSet <int> set1 = new HashSet <int>(); for (int i = 0; i < 20000; i++) { set1.Add(GetUid(x, i) ^ GetUid(y, i)); } HashSet <int> set2 = new HashSet <int>(); for (int i = 0; i < batches.BatchesCount; i++) { int h = batches.Batches[i].X.GetLength(0); for (int j = 0; j < h; j++) { set2.Add(GetUid(batches.Batches[i].X, j) ^ GetUid(batches.Batches[i].Y, j)); } } Assert.IsTrue(set1.OrderBy(h => h).SequenceEqual(set2.OrderBy(h => h))); batches.CrossShuffle(); HashSet <int> set3 = new HashSet <int>(); for (int i = 0; i < batches.BatchesCount; i++) { int h = batches.Batches[i].X.GetLength(0); for (int j = 0; j < h; j++) { set3.Add(GetUid(batches.Batches[i].X, j) ^ GetUid(batches.Batches[i].Y, j)); } } Assert.IsTrue(set1.OrderBy(h => h).SequenceEqual(set3.OrderBy(h => h))); }
public MainWindow() { InitializeComponent(); CPPNSettings.ThumbnailWidth = 360; CPPNSettings.ThumbnailHeight = 240; CPPNSettings.RenderWidth = 15360; CPPNSettings.RenderHeight = 8640; CPPNSettings.PaletteSize = 65535; CPPNSettings.UseColor = false; CPPNSettings.GenerateWeight = () => ThreadSafeRandom.NextUniform() * 4; //CPPNSettings.GenerateWeight = () => 1; CPPNSettings.Activations.Add(Activations.Tanh); CPPNSettings.Activations.Add(Activations.Gaussian); CPPNSettings.Activations.Add(Activations.Sin); //CPPNSettings.Activations.Add(Activations.Cos); //CPPNSettings.Activations.Add(Activations.ID); //CPPNSettings.Activations.Add(Activations.Sqrt); //CPPNSettings.Activations.Add(x => x.Magnitude); //CPPNSettings.Activations.Add(x => -x); //CPPNSettings.Activations.Add(x => SharpNoise.NoiseGenerator.GradientCoherentNoise3D(x, 1, 1)); //CPPNSettings.Activations.Add(x => x < -1 ? -1 : x > 1 ? 1 : x); //CPPNSettings.Activations.Add(Activations.ArcTan); //CPPNSettings.Activations.Add(Activations.Sigmoid); //CPPNSettings.Activations.Add(Activations.AbsTanh); //CPPNSettings.Activations.Add(Activations.Abs); //CPPNSettings.Activations.Add(Activations.Sinc); CPPNSettings.Activations.Add(Activations.Square); CPPNSettings.Activations.Add(Activations.Cube); ////CPPNSettings.Activations.Add(Activations.Sqrt); //CPPNSettings.Activations.Add(Activations.Log); //CPPNSettings.Activations.Add(Activations.Recp); //CPPNSettings.Activations.Add(x => x % 1.0); CPPNSettings.Combinators.Add((x, y) => x + y); //CPPNSettings.Combinators.Add((x, y) => x * y); //CPPNSettings.Combinators.Add((x, y) => x % y); //CPPNSettings.Combinators.Add((x, y) => Math.Min(x.Magnitude, y.Magnitude)); //CPPNSettings.Combinators.Add((x, y) => { // var a = Math.Cos(x / (2 * Math.PI)); // var b = Math.Sin(x / (2 * Math.PI)); // var c = Math.Cos(y / (2 * Math.PI)); // var d = Math.Sin(y / (2 * Math.PI)); // var r = (a * c) - (b * d); // var i = (a * d) + (c * b); // return Math.Atan2(i, r); //}); CPPNSettings.OutputTransform = Activations.ID; InitializePopulation(); RenderPopulation(); }
public void BatchInitializationTest() { float[,] x = Enumerable.Range(0, 250 * 600).Select(_ => ThreadSafeRandom.NextUniform(1000)).ToArray().AsSpan().AsMatrix(250, 600), y = Enumerable.Range(0, 250 * 10).Select(_ => ThreadSafeRandom.NextUniform(500)).ToArray().AsSpan().AsMatrix(250, 10); (float[], float[])[] samples = Enumerable.Range(0, 250).Select(i =>