Пример #1
0
        public void NestOption_sampling_from_uniform_space_test()
        {
            var nestOption = new NestOption();

            nestOption.Add("choice", new ChoiceOption("a", "b", "c"));
            nestOption.Add("int", new UniformIntOption(0, 1));
            var anotherNestOption = new NestOption();

            anotherNestOption["choice"] = new ChoiceOption("d", "e");
            anotherNestOption["int"]    = new UniformIntOption(2, 3);
            nestOption["nestOption"]    = anotherNestOption;

            nestOption.FeatureSpaceDim.Should().Be(4);
            var parameter = nestOption.SampleFromFeatureSpace(new double[] { 0, 0, 0, 0 });

            parameter["nestOption"]["choice"].AsType <string>().Should().Be("d");
            parameter["nestOption"]["int"].AsType <int>().Should().Be(2);
            parameter["choice"].AsType <string>().Should().Be("a");
            parameter["int"].AsType <int>().Should().Be(0);

            parameter = nestOption.SampleFromFeatureSpace(new double[] { 1, 1, 1, 1 });
            parameter["nestOption"]["choice"].AsType <string>().Should().Be("e");
            parameter["nestOption"]["int"].AsType <int>().Should().Be(3);
            parameter["choice"].AsType <string>().Should().Be("c");
            parameter["int"].AsType <int>().Should().Be(1);
        }
        public void Uniform_integer_option_mapping_to_uniform_space_test()
        {
            var option = new UniformIntOption(0, 100);

            var sampleInputs  = Enumerable.Range(0, 10).Select(i => Parameter.FromInt(i * 10));
            var sampleOutputs = sampleInputs.Select(i => option.MappingToFeatureSpace(i)[0]);

            sampleOutputs.Should().Equal(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9);
        }
        public void Uniform_log_integer_option_sampling_from_uniform_space_test()
        {
            var option = new UniformIntOption(1, 1024, true);

            var sampleInputs  = Enumerable.Range(0, 10).Select(i => i * 0.1);
            var sampleOutputs = sampleInputs.Select(i => option.SampleFromFeatureSpace(new[] { i }));

            sampleOutputs.Select(x => x.AsType <int>()).Should().Equal(1, 2, 4, 8, 16, 32, 64, 128, 256, 512);
        }
        public void Uniform_integer_option_sampling_from_uniform_space_test()
        {
            var option = new UniformIntOption(0, 100);

            var sampleInputs  = Enumerable.Range(0, 10).Select(i => i * 0.1);
            var sampleOutputs = sampleInputs.Select(i => option.SampleFromFeatureSpace(new[] { i }));

            sampleOutputs.Select(x => x.AsType <int>()).Should().Equal(0, 10, 20, 30, 40, 50, 60, 70, 80, 90);
        }
        public void Uniform_log_integer_option_mapping_to_uniform_space_test()
        {
            var option = new UniformIntOption(1, 1024, true);

            var sampleInputs  = Enumerable.Range(0, 10).Select(i => Parameter.FromInt(Convert.ToInt32(Math.Pow(2, i))));
            var sampleOutputs = sampleInputs.Select(i => option.MappingToFeatureSpace(i)[0]).ToArray();

            foreach (var i in Enumerable.Range(0, 10))
            {
                sampleOutputs[i].Should().BeApproximately(0.1 * i, 0.0001);
            }
        }
Пример #6
0
        public void NestOption_mapping_order_test()
        {
            // each dimension in uniform space should be mapping to the options under nest option in a certain (key ascending) order.
            var nestOption = new NestOption();

            nestOption["a"] = new UniformIntOption(0, 1);
            nestOption["b"] = new UniformIntOption(1, 2);
            nestOption["c"] = new UniformIntOption(2, 3);

            // changing of the first dimension should be reflected in option "a"
            var parameter = nestOption.SampleFromFeatureSpace(new double[] { 0, 0.5, 0.5 });

            parameter["a"].AsType <int>().Should().Be(0);
            parameter = nestOption.SampleFromFeatureSpace(new double[] { 1, 0.5, 0.5 });
            parameter["a"].AsType <int>().Should().Be(1);

            nestOption.Remove("a");

            // the first dimension should be option "b"
            parameter = nestOption.SampleFromFeatureSpace(new double[] { 0, 0.5 });
            parameter["b"].AsType <int>().Should().Be(1);
            parameter = nestOption.SampleFromFeatureSpace(new double[] { 1, 0.5 });
            parameter["b"].AsType <int>().Should().Be(2);
        }
Пример #7
0
 /// <summary>
 /// Create a <see cref="RangeAttribute"/> for <see cref="UniformIntOption"/>.
 /// </summary>
 public RangeAttribute(int min, int max, int init, bool logBase = false)
 {
     Option = new UniformIntOption(min, max, logBase, init);
 }
        public void Uniform_integer_option_mapping_to_uniform_space_test_2()
        {
            var option = new UniformIntOption(20, 1024, defaultValue: 20, logBase: true);

            option.SampleFromFeatureSpace(new double[] { 0.0 }).AsType <int>().Should().Be(20);
        }