13
13
X, f, Σy = generate_toy_problem (rng, N, D)
14
14
15
15
AbstractGPs. TestUtils. test_finitegp_primary_and_secondary_public_interface (
16
- rng, f (X, Σy),
16
+ rng, f (X, Σy)
17
17
)
18
18
end
19
19
@testset " rand" begin
24
24
Y = rand (rng, f (X, Σy), samples)
25
25
m_empirical = mean (Y; dims= 2 )
26
26
Σ_empirical = (Y .- mean (Y; dims= 2 )) * (Y .- mean (Y; dims= 2 ))' ./ samples
27
- @test mean (f (X, Σy)) ≈ m_empirical atol= 1e-3 rtol= 1e-3
28
- @test cov (f (X, Σy)) ≈ Σ_empirical atol= 1e-3 rtol= 1e-3
27
+ @test mean (f (X, Σy)) ≈ m_empirical atol = 1e-3 rtol = 1e-3
28
+ @test cov (f (X, Σy)) ≈ Σ_empirical atol = 1e-3 rtol = 1e-3
29
29
30
30
@testset " Zygote (everything dense)" begin
31
31
function rand_blr (X, A_Σy, mw, A_Λw)
45
45
46
46
# Verify adjoints via finite differencing.
47
47
fdm = central_fdm (5 , 1 )
48
- @test dX ≈ first (j′vp (fdm, X-> rand_blr (X, A_Σy, mw, A_Λw), z̄, X))
49
- @test dA_Σy ≈ first (j′vp (fdm, A_Σy-> rand_blr (X, A_Σy, mw, A_Λw), z̄, A_Σy))
50
- @test dmw ≈ first (j′vp (fdm, mw-> rand_blr (X, A_Σy, mw, A_Λw), z̄, mw))
51
- @test dA_Λw ≈ first (j′vp (fdm, A_Λw-> rand_blr (X, A_Σy, mw, A_Λw), z̄, A_Λw))
48
+ @test dX ≈ first (j′vp (fdm, X -> rand_blr (X, A_Σy, mw, A_Λw), z̄, X))
49
+ @test dA_Σy ≈ first (j′vp (fdm, A_Σy -> rand_blr (X, A_Σy, mw, A_Λw), z̄, A_Σy))
50
+ @test dmw ≈ first (j′vp (fdm, mw -> rand_blr (X, A_Σy, mw, A_Λw), z̄, mw))
51
+ @test dA_Λw ≈ first (j′vp (fdm, A_Λw -> rand_blr (X, A_Σy, mw, A_Λw), z̄, A_Λw))
52
52
end
53
53
end
54
54
@testset " logpdf" begin
79
79
80
80
# Check correctness via finite differencing.
81
81
fdm = central_fdm (5 , 1 )
82
- @test dX ≈ first (j′vp (fdm, X-> logpdf_blr (X, A_Σy, y, mw, A_Λw), z̄, X))
83
- @test dA_Σy ≈ first (j′vp (fdm, A_Σy-> logpdf_blr (X, A_Σy, y, mw, A_Λw), z̄, A_Σy))
84
- @test dy ≈ first (j′vp (fdm, y-> logpdf_blr (X, A_Σy, y, mw, A_Λw), z̄, y))
85
- @test dmw ≈ first (j′vp (fdm, mw-> logpdf_blr (X, A_Σy, y, mw, A_Λw), z̄, mw))
86
- @test dA_Λw ≈ first (j′vp (fdm, A_Λw-> logpdf_blr (X, A_Σy, y, mw, A_Λw), z̄, A_Λw))
82
+ @test dX ≈ first (j′vp (fdm, X -> logpdf_blr (X, A_Σy, y, mw, A_Λw), z̄, X))
83
+ @test dA_Σy ≈
84
+ first (j′vp (fdm, A_Σy -> logpdf_blr (X, A_Σy, y, mw, A_Λw), z̄, A_Σy))
85
+ @test dy ≈ first (j′vp (fdm, y -> logpdf_blr (X, A_Σy, y, mw, A_Λw), z̄, y))
86
+ @test dmw ≈ first (j′vp (fdm, mw -> logpdf_blr (X, A_Σy, y, mw, A_Λw), z̄, mw))
87
+ @test dA_Λw ≈
88
+ first (j′vp (fdm, A_Λw -> logpdf_blr (X, A_Σy, y, mw, A_Λw), z̄, A_Λw))
87
89
end
88
90
end
89
91
@testset " posterior" begin
@@ -105,14 +107,11 @@ end
105
107
# Chop up the noise because we can't condition on noise that's correlated
106
108
# between things.
107
109
N1 = N - 3
108
- Σ1, Σ2 = Σy[1 : N1, 1 : N1], Σy[N1+ 1 : end , N1+ 1 : end ]
109
- Σy′ = vcat (
110
- hcat (Σ1, zeros (N1, N - N1)),
111
- hcat (zeros (N - N1, N1), Σ2),
112
- )
110
+ Σ1, Σ2 = Σy[1 : N1, 1 : N1], Σy[(N1 + 1 ): end , (N1 + 1 ): end ]
111
+ Σy′ = vcat (hcat (Σ1, zeros (N1, N - N1)), hcat (zeros (N - N1, N1), Σ2))
113
112
114
- X1, X2 = X[:, 1 : N1], X[:, N1 + 1 : end ]
115
- y1, y2 = y[1 : N1], y[N1 + 1 : end ]
113
+ X1, X2 = X[:, 1 : N1], X[:, (N1 + 1 ) : end ]
114
+ y1, y2 = y[1 : N1], y[(N1 + 1 ) : end ]
116
115
117
116
f′1 = posterior (f (X1, Σ1), y1)
118
117
f′2 = posterior (f′1 (X2, Σ2), y2)
135
134
@test g (X) == g (Xr)
136
135
137
136
# test the Random interface
138
- @test rand (rng, Random. Sampler (rng, f, Val (Inf ))) isa BayesianLinearRegressors. BLRFunctionSample
137
+ @test rand (rng, Random. Sampler (rng, f, Val (Inf ))) isa
138
+ BayesianLinearRegressors. BLRFunctionSample
139
139
140
140
samples1, samples2 = 10_000 , 1000
141
141
samples = samples1 * samples2
@@ -145,23 +145,21 @@ end
145
145
# test statistical properties of the sampled functions
146
146
let
147
147
Y = reduce (hcat, map (h -> h (X), reshape (gs, :)))
148
- m_empirical = mean (Y; dims = 2 )
149
- Σ_empirical = (Y .- mean (Y; dims = 2 )) * (Y .- mean (Y; dims = 2 ))' ./ samples
148
+ m_empirical = mean (Y; dims= 2 )
149
+ Σ_empirical = (Y .- mean (Y; dims= 2 )) * (Y .- mean (Y; dims= 2 ))' ./ samples
150
150
@test mean (f (X, Σy)) ≈ m_empirical atol = 1e-3 rtol = 1e-3
151
151
@test cov (f (X, Σy)) ≈ Σ_empirical + Σy atol = 1e-3 rtol = 1e-3
152
152
end
153
153
154
154
# test statistical properties of in-place rand
155
155
let
156
156
A = Array {BayesianLinearRegressors.BLRFunctionSample,2} (
157
- undef,
158
- samples1,
159
- samples2,
157
+ undef, samples1, samples2
160
158
)
161
159
A = rand! (rng, A, f)
162
160
Y = reduce (hcat, map (h -> h (X), reshape (gs, :)))
163
- m_empirical = mean (Y; dims = 2 )
164
- Σ_empirical = (Y .- mean (Y; dims = 2 )) * (Y .- mean (Y; dims = 2 ))' ./ samples
161
+ m_empirical = mean (Y; dims= 2 )
162
+ Σ_empirical = (Y .- mean (Y; dims= 2 )) * (Y .- mean (Y; dims= 2 ))' ./ samples
165
163
@test mean (f (X, Σy)) ≈ m_empirical atol = 1e-3 rtol = 1e-3
166
164
@test cov (f (X, Σy)) ≈ Σ_empirical + Σy atol = 1e-3 rtol = 1e-3
167
165
end
185
183
@test dX ≈ first (j′vp (fdm, X -> sample_function (X, mw, A_Λw), z̄, X))
186
184
@test dmw ≈ first (j′vp (fdm, mw -> sample_function (X, mw, A_Λw), z̄, mw))
187
185
@test dA_Λw ≈
188
- first (j′vp (fdm, A_Λw -> sample_function (X, mw, A_Λw), z̄, A_Λw))
186
+ first (j′vp (fdm, A_Λw -> sample_function (X, mw, A_Λw), z̄, A_Λw))
189
187
end
190
188
191
189
function rand_funcs_single (X, mw, A_Λw)
0 commit comments