Skip to content

Commit c7b0a30

Browse files
yebaisunxd3
andauthored
Transfer some test utility function into DynamicPPL (#2049)
* Update OptimInterface.jl * Only run optimisation tests in numerical stage. * fix function lookup after moving functions --------- Co-authored-by: Xianda Sun <[email protected]>
1 parent 5c3d879 commit c7b0a30

File tree

1 file changed

+3
-38
lines changed

1 file changed

+3
-38
lines changed

test/modes/OptimInterface.jl

Lines changed: 3 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,3 @@
1-
# TODO: Remove these once the equivalent is present in `DynamicPPL.TestUtils.
2-
function likelihood_optima(::DynamicPPL.TestUtils.UnivariateAssumeDemoModels)
3-
return (s=1/16, m=7/4)
4-
end
5-
function posterior_optima(::DynamicPPL.TestUtils.UnivariateAssumeDemoModels)
6-
# TODO: Figure out exact for `s`.
7-
return (s=0.907407, m=7/6)
8-
end
9-
10-
function likelihood_optima(model::DynamicPPL.TestUtils.MultivariateAssumeDemoModels)
11-
# Get some containers to fill.
12-
vals = Random.rand(model)
13-
14-
# NOTE: These are "as close to zero as we can get".
15-
vals.s[1] = 1e-32
16-
vals.s[2] = 1e-32
17-
18-
vals.m[1] = 1.5
19-
vals.m[2] = 2.0
20-
21-
return vals
22-
end
23-
function posterior_optima(model::DynamicPPL.TestUtils.MultivariateAssumeDemoModels)
24-
# Get some containers to fill.
25-
vals = Random.rand(model)
26-
27-
# TODO: Figure out exact for `s[1]`.
28-
vals.s[1] = 0.890625
29-
vals.s[2] = 1
30-
vals.m[1] = 3/4
31-
vals.m[2] = 1
32-
33-
return vals
34-
end
35-
361
# Used for testing how well it works with nested contexts.
372
struct OverrideContext{C,T1,T2} <: DynamicPPL.AbstractContext
383
context::C
@@ -57,7 +22,7 @@ function DynamicPPL.tilde_observe(context::OverrideContext, right, left, vi)
5722
return context.loglikelihood_weight, vi
5823
end
5924

60-
@testset "OptimInterface.jl" begin
25+
@numerical_testset "OptimInterface.jl" begin
6126
@testset "MLE" begin
6227
Random.seed!(222)
6328
true_value = [0.0625, 1.75]
@@ -157,7 +122,7 @@ end
157122
# FIXME: Some models doesn't work for Tracker and ReverseDiff.
158123
if Turing.Essential.ADBACKEND[] === :forwarddiff
159124
@testset "MAP for $(model.f)" for model in DynamicPPL.TestUtils.DEMO_MODELS
160-
result_true = posterior_optima(model)
125+
result_true = DynamicPPL.TestUtils.posterior_optima(model)
161126

162127
@testset "$(nameof(typeof(optimizer)))" for optimizer in [LBFGS(), NelderMead()]
163128
result = optimize(model, MAP(), optimizer)
@@ -188,7 +153,7 @@ end
188153
DynamicPPL.TestUtils.demo_dot_assume_matrix_dot_observe_matrix,
189154
]
190155
@testset "MLE for $(model.f)" for model in DynamicPPL.TestUtils.DEMO_MODELS
191-
result_true = likelihood_optima(model)
156+
result_true = DynamicPPL.TestUtils.likelihood_optima(model)
192157

193158
# `NelderMead` seems to struggle with convergence here, so we exclude it.
194159
@testset "$(nameof(typeof(optimizer)))" for optimizer in [LBFGS(),]

0 commit comments

Comments
 (0)