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); } }
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); }
/// <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); }