Skip to content

Commit a1fd0aa

Browse files
refactor IParameter class (#1349)
1 parent f8cf66a commit a1fd0aa

File tree

4 files changed

+30
-19
lines changed

4 files changed

+30
-19
lines changed

SearchSpace/src/Microsoft.ML.ModelBuilder.SearchSpace.Tests/ChoiceOptionTest.cs

+4-4
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,9 @@ public void Choice_option_with_one_value_sampling_from_uniform_space_test()
3434
public void Choice_option_mapping_to_uniform_space_test()
3535
{
3636
var option = new ChoiceOption("a", "b", "c");
37-
option.MappingToFeatureSpace(new Parameter("a"))[0].Should().BeApproximately(0, 1e-5);
38-
option.MappingToFeatureSpace(new Parameter("b"))[0].Should().BeApproximately(0.333333, 1e-5);
39-
option.MappingToFeatureSpace(new Parameter("c"))[0].Should().BeApproximately(0.666666, 1e-5);
37+
option.MappingToFeatureSpace(Parameter.FromString("a"))[0].Should().BeApproximately(0, 1e-5);
38+
option.MappingToFeatureSpace(Parameter.FromString("b"))[0].Should().BeApproximately(0.333333, 1e-5);
39+
option.MappingToFeatureSpace(Parameter.FromString("c"))[0].Should().BeApproximately(0.666666, 1e-5);
4040
}
4141

4242
[Fact]
@@ -46,7 +46,7 @@ public void Choice_option_dimension_should_be_0_if_contains_only_one_value()
4646
option.FeatureSpaceDim.Should().Be(0);
4747
option.Default.Should().BeEquivalentTo();
4848
option.SampleFromFeatureSpace(new double[0]).AsType<string>().Should().Be("b");
49-
option.MappingToFeatureSpace(new Parameter("b")).Should().BeEmpty();
49+
option.MappingToFeatureSpace(Parameter.FromString("b")).Should().BeEmpty();
5050
}
5151
}
5252
}

SearchSpace/src/Microsoft.ML.ModelBuilder.SearchSpace.Tests/ParameterTest.cs

+9-9
Original file line numberDiff line numberDiff line change
@@ -29,41 +29,41 @@ public ParameterTest(ITestOutputHelper output)
2929
[Fact]
3030
public void Parameter_with_single_value_test()
3131
{
32-
var parameter = new Parameter(3);
32+
var parameter = Parameter.FromInt(3);
3333

3434
// integer
3535
parameter.AsType<int>().Should().Be(3);
3636

3737
// double
38-
parameter = new Parameter(3.1415926);
38+
parameter = Parameter.FromDouble(3.1415926);
3939
parameter.AsType<double>().Should().Be(3.1415926);
4040

4141
// float
42-
parameter = new Parameter(3.1415926F);
42+
parameter = Parameter.FromFloat(3.1415926F);
4343
parameter.AsType<float>().Should().Be(3.1415926F);
4444

4545
// string
46-
parameter = new Parameter("abc");
46+
parameter = Parameter.FromString("abc");
4747
parameter.AsType<string>().Should().Be("abc");
4848

4949
// bool
50-
parameter = new Parameter(false);
50+
parameter = Parameter.FromBool(false);
5151
parameter.AsType<bool>().Should().BeFalse();
5252

5353
// string[]
54-
parameter = new Parameter(new[] { "a", "b", "c" });
54+
parameter = Parameter.FromIEnumerable(new[] {"a", "b", "c"});
5555
parameter.AsType<string[]>().Should().BeEquivalentTo("a", "b", "c");
5656

5757
// enum
58-
parameter = new Parameter(JTokenType.Array);
58+
parameter = Parameter.FromEnum(JTokenType.Array);
5959
parameter.AsType<JTokenType>().Should().Be(JTokenType.Array);
6060
}
6161

6262
[Fact]
6363
public void Nested_parameter_test()
6464
{
6565
var b = new B();
66-
var parameter = new Parameter(b);
66+
var parameter = Parameter.FromObject(b);
6767

6868
parameter["Int"].AsType<int>().Should().Be(0);
6969
parameter["Float"].AsType<float>().Should().Be(1f);
@@ -83,7 +83,7 @@ public void Nested_parameter_serialize_test()
8383
{
8484
var b = new B();
8585
b.String = null;
86-
var parameter = new Parameter(b);
86+
var parameter = Parameter.FromObject(b);
8787
var json = JsonConvert.SerializeObject(parameter);
8888
Approvals.Verify(json);
8989

SearchSpace/src/Microsoft.ML.ModelBuilder.SearchSpace.Tests/SearchSpaceTest.cs

+4-2
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,6 @@ public void Nest_searchSpace_sample_from_feature_space_test()
8282
},
8383
},
8484
};
85-
8685
var ss = new SearchSpace<NestSearchSpace>(option);
8786

8887
ss.FeatureSpaceDim.Should().Be(6);
@@ -130,9 +129,12 @@ public void Search_space_remove_option_test()
130129
ss.Remove("UniformInt").Should().BeTrue();
131130
ss.FeatureSpaceDim.Should().Be(3);
132131
ss.Keys.Should().BeEquivalentTo("ChoiceStr", "UniformDouble", "UniformFloat");
133-
132+
134133
ss.SampleFromFeatureSpace(new double[] { 0, 0, 0})
135134
.DefaultSearchSpace.Strings.Should().BeEquivalentTo("A", "B", "C");
135+
136+
ss.SampleFromFeatureSpace(new double[] { 0, 0, 0 })
137+
.DefaultSearchSpace.String.Should().BeNullOrEmpty();
136138
}
137139

138140
[Fact]

SearchSpace/src/Microsoft.ML.ModelBuilder.SearchSpace.Tests/UniformNumericOptionTests.cs

+13-4
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public void Uniform_integer_option_mapping_to_uniform_space_test()
4242
{
4343
var option = new UniformIntOption(0, 100);
4444

45-
var sampleInputs = Enumerable.Range(0, 10).Select(i => new Parameter(i * 10));
45+
var sampleInputs = Enumerable.Range(0, 10).Select(i => Parameter.FromInt(i * 10));
4646
var sampleOutputs = sampleInputs.Select(i => option.MappingToFeatureSpace(i)[0]);
4747

4848
sampleOutputs.Should().Equal(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9);
@@ -60,7 +60,7 @@ public void Uniform_log_integer_option_mapping_to_uniform_space_test()
6060
{
6161
var option = new UniformIntOption(1, 1024, true);
6262

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

6666
foreach (var i in Enumerable.Range(0, 10))
@@ -100,7 +100,7 @@ public void Uniform_double_option_mapping_to_uniform_space_test()
100100
{
101101
var option = new UniformDoubleOption(0, 100);
102102

103-
var sampleInputs = Enumerable.Range(0, 10).Select(i => new Parameter(i * 10.0));
103+
var sampleInputs = Enumerable.Range(0, 10).Select(i => Parameter.FromDouble(i * 10.0));
104104
var sampleOutputs = sampleInputs.Select(i => option.MappingToFeatureSpace(i)[0]);
105105

106106
sampleOutputs.Should().Equal(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9);
@@ -111,13 +111,22 @@ public void Uniform_log_double_option_mapping_to_uniform_space_test()
111111
{
112112
var option = new UniformDoubleOption(1, 1024, true);
113113

114-
var sampleInputs = Enumerable.Range(0, 10).Select(i => new Parameter(Math.Pow(2, i)));
114+
var sampleInputs = Enumerable.Range(0, 10).Select(i => Parameter.FromDouble(Math.Pow(2, i)));
115115
var sampleOutputs = sampleInputs.Select(i => option.MappingToFeatureSpace(i)).ToArray();
116116

117117
foreach (var i in Enumerable.Range(0, 10))
118118
{
119119
sampleOutputs[i][0].Should().BeApproximately(0.1 * i, 1e-5);
120120
}
121121
}
122+
123+
[Fact]
124+
public void Uniform_log_double_option_round_up_test()
125+
{
126+
var option = new UniformDoubleOption(2e-10, 1, defaultValue: 2e-10, logBase: true);
127+
option.Default.Should().Equal(0);
128+
option.SampleFromFeatureSpace(option.Default).AsType<double>().Should().Be(2e-10);
129+
option.SampleFromFeatureSpace(new[] {1.0}).AsType<double>().Should().Be(1.0);
130+
}
122131
}
123132
}

0 commit comments

Comments
 (0)