@@ -3,7 +3,7 @@ using LinearAlgebra
3
3
using KernelFunctions
4
4
using SpecialFunctions
5
5
6
- x = rand ()* 2 ; v1 = rand (3 ); v2 = rand (3 )
6
+ x = rand ()* 2 ; v1 = rand (3 ); v2 = rand (3 ); id = IdentityTransform ()
7
7
@testset " Kappa functions of kernels" begin
8
8
@testset " Constant" begin
9
9
@testset " ZeroKernel" begin
@@ -32,6 +32,7 @@ x = rand()*2; v1 = rand(3); v2 = rand(3)
32
32
k = SqExponentialKernel ()
33
33
@test kappa (k,x) ≈ exp (- x)
34
34
@test k (v1,v2) ≈ exp (- norm (v1- v2)^ 2 )
35
+ @test kappa (SqExponentialKernel (id),x) == kappa (k,x)
35
36
l = 0.5
36
37
k = SqExponentialKernel (l)
37
38
@test k (v1,v2) ≈ exp (- l^ 2 * norm (v1- v2)^ 2 )
@@ -43,6 +44,7 @@ x = rand()*2; v1 = rand(3); v2 = rand(3)
43
44
k = ExponentialKernel ()
44
45
@test kappa (k,x) ≈ exp (- x)
45
46
@test k (v1,v2) ≈ exp (- norm (v1- v2))
47
+ @test kappa (ExponentialKernel (id),x) == kappa (k,x)
46
48
l = 0.5
47
49
k = ExponentialKernel (l)
48
50
@test k (v1,v2) ≈ exp (- l* norm (v1- v2))
@@ -54,12 +56,16 @@ x = rand()*2; v1 = rand(3); v2 = rand(3)
54
56
k = GammaExponentialKernel (1.0 ,2.0 )
55
57
@test kappa (k,x) ≈ exp (- (x)^ (k. γ))
56
58
@test k (v1,v2) ≈ exp (- norm (v1- v2)^ (2 k. γ))
59
+ @test kappa (GammaExponentialKernel (id),x) == kappa (k,x)
57
60
l = 0.5
58
61
k = GammaExponentialKernel (l,1.5 )
59
62
@test k (v1,v2) ≈ exp (- l^ (3.0 )* norm (v1- v2)^ (3.0 ))
60
63
v = rand (3 )
61
64
k = GammaExponentialKernel (v,3.0 )
62
65
@test k (v1,v2) ≈ exp (- norm (v.* (v1- v2)).^ 6.0 )
66
+ # Coherence :
67
+ @test kernel (GammaExponentialKernel (1.0 ,1.0 ),v1,v2) ≈ kernel (SqExponentialKernel (),v1,v2)
68
+ @test kernel (GammaExponentialKernel (1.0 ,0.5 ),v1,v2) ≈ kernel (ExponentialKernel (),v1,v2)
63
69
end
64
70
end
65
71
@testset " Exponentiated" begin
@@ -83,6 +89,7 @@ x = rand()*2; v1 = rand(3); v2 = rand(3)
83
89
matern (x,ν) = 2 ^ (1 - ν)/ gamma (ν)* (sqrt (2 ν)* x)^ ν* besselk (ν,sqrt (2 ν)* x)
84
90
@test kappa (k,x) ≈ matern (x,ν)
85
91
@test kappa (k,0.0 ) == 1.0
92
+ @test kappa (MaternKernel (id,ν),x) == kappa (k,x)
86
93
l = 0.5 ; ν = 3.0
87
94
k = MaternKernel (l,ν)
88
95
@test k (v1,v2) ≈ matern (l* norm (v1- v2),ν)
@@ -94,6 +101,7 @@ x = rand()*2; v1 = rand(3); v2 = rand(3)
94
101
k = Matern32Kernel ()
95
102
@test kappa (k,x) ≈ (1 + sqrt (3 )* x)exp (- sqrt (3 )* x)
96
103
@test k (v1,v2) ≈ (1 + sqrt (3 )* norm (v1- v2))exp (- sqrt (3 )* norm (v1- v2))
104
+ @test kappa (Matern32Kernel (id),x) == kappa (k,x)
97
105
l = 0.5
98
106
k = Matern32Kernel (l)
99
107
@test k (v1,v2) ≈ (1 + l* sqrt (3 )* norm (v1- v2))exp (- l* sqrt (3 )* norm (v1- v2))
@@ -105,6 +113,7 @@ x = rand()*2; v1 = rand(3); v2 = rand(3)
105
113
k = Matern52Kernel ()
106
114
@test kappa (k,x) ≈ (1 + sqrt (5 )* x+ 5 / 3 * x^ 2 )exp (- sqrt (5 )* x)
107
115
@test k (v1,v2) ≈ (1 + sqrt (5 )* norm (v1- v2)+ 5 / 3 * norm (v1- v2)^ 2 )exp (- sqrt (5 )* norm (v1- v2))
116
+ @test kappa (Matern52Kernel (id),x) == kappa (k,x)
108
117
l = 0.5
109
118
k = Matern52Kernel (l)
110
119
@test k (v1,v2) ≈ (1 + l* sqrt (5 )* norm (v1- v2)+ l^ 2 * 5 / 3 * norm (v1- v2)^ 2 )exp (- l* sqrt (5 )* norm (v1- v2))
@@ -124,6 +133,7 @@ x = rand()*2; v1 = rand(3); v2 = rand(3)
124
133
k = LinearKernel ()
125
134
@test kappa (k,x) ≈ x
126
135
@test k (v1,v2) ≈ dot (v1,v2)
136
+ @test kappa (LinearKernel (id),x) == kappa (k,x)
127
137
l = 0.5
128
138
k = LinearKernel (l,c)
129
139
@test k (v1,v2) ≈ l^ 2 * dot (v1,v2) + c
@@ -135,6 +145,7 @@ x = rand()*2; v1 = rand(3); v2 = rand(3)
135
145
k = PolynomialKernel ()
136
146
@test kappa (k,x) ≈ x^ 2
137
147
@test k (v1,v2) ≈ dot (v1,v2)^ 2
148
+ @test kappa (PolynomialKernel (id),x) == kappa (k,x)
138
149
d = 3.0
139
150
l = 0.5
140
151
k = PolynomialKernel (l,d,c)
@@ -151,6 +162,7 @@ x = rand()*2; v1 = rand(3); v2 = rand(3)
151
162
k = RationalQuadraticKernel ()
152
163
@test kappa (k,x) ≈ (1.0 + x/ 2.0 )^- 2
153
164
@test k (v1,v2) ≈ (1.0 + norm (v1- v2)^ 2 / 2.0 )^- 2
165
+ @test kappa (RationalQuadraticKernel (id),x) == kappa (k,x)
154
166
l = 0.5
155
167
a = 1.0 + rand ()
156
168
k = RationalQuadraticKernel (l,a)
@@ -163,6 +175,7 @@ x = rand()*2; v1 = rand(3); v2 = rand(3)
163
175
k = GammaRationalQuadraticKernel ()
164
176
@test kappa (k,x) ≈ (1.0 + x^ 2.0 / 2.0 )^- 2
165
177
@test k (v1,v2) ≈ (1.0 + norm (v1- v2)^ 4.0 / 2.0 )^- 2
178
+ @test kappa (GammaRationalQuadraticKernel (id),x) == kappa (k,x)
166
179
l = 0.5
167
180
a = 1.0 + rand ()
168
181
g = 4.0
0 commit comments