@@ -14,37 +14,58 @@ const AGP = AugmentedGaussianProcesses
14
14
15
15
# # Benchmark
16
16
17
-
18
-
19
17
compat = Dict {String,Dict{String,Vector{String}}} ()
20
- likelihoodnames = [" Gaussian" ," StudentT" ," Logistic" ," BayesianSVM" ," LogisticSoftMax" ]
21
- inferencenames = [" AnalyticVI" ," AnalyticSVI" ]
22
- modelnames = [" GP" ," VGP" ," SVGP" ]
23
- funcs = [" init" ," elbo" ," computematrices" ," updatevariational" ," updatehyperparam" ," predic" ," predicproba" ]
24
- compat[" GP" ] = Dict {String,Vector{String}} (" Gaussian" => [" AnalyticVI" ])
18
+ likelihoodnames = [" Gaussian" , " StudentT" , " Logistic" , " BayesianSVM" , " LogisticSoftMax" ]
19
+ inferencenames = [" AnalyticVI" , " AnalyticSVI" ]
20
+ modelnames = [" GP" , " VGP" , " SVGP" ]
21
+ funcs = [
22
+ " init" ,
23
+ " elbo" ,
24
+ " computematrices" ,
25
+ " updatevariational" ,
26
+ " updatehyperparam" ,
27
+ " predic" ,
28
+ " predicproba" ,
29
+ ]
30
+ compat[" GP" ] = Dict {String,Vector{String}} (" Gaussian" => [" AnalyticVI" ])
25
31
compat[" VGP" ] = Dict {String,Vector{String}} ()
26
32
compat[" VGP" ][" StudentT" ] = [" AnalyticVI" ]
27
33
compat[" VGP" ][" Logistic" ] = [" AnalyticVI" ]
28
34
compat[" VGP" ][" BayesianSVM" ] = [" AnalyticVI" ]
29
35
compat[" VGP" ][" LogisticSoftMax" ] = [" AnalyticVI" ]
30
36
compat[" SVGP" ] = Dict {String,Vector{String}} ()
31
- compat[" SVGP" ][" Gaussian" ] = [" AnalyticVI" ," AnalyticSVI" ]
32
- compat[" SVGP" ][" StudentT" ] = [" AnalyticVI" ," AnalyticSVI" ]
33
- compat[" SVGP" ][" Logistic" ] = [" AnalyticVI" ," AnalyticSVI" ]
34
- compat[" SVGP" ][" BayesianSVM" ] = [" AnalyticVI" ," AnalyticSVI" ]
35
- compat[" SVGP" ][" LogisticSoftMax" ] = [" AnalyticVI" ," AnalyticSVI" ]
37
+ compat[" SVGP" ][" Gaussian" ] = [" AnalyticVI" , " AnalyticSVI" ]
38
+ compat[" SVGP" ][" StudentT" ] = [" AnalyticVI" , " AnalyticSVI" ]
39
+ compat[" SVGP" ][" Logistic" ] = [" AnalyticVI" , " AnalyticSVI" ]
40
+ compat[" SVGP" ][" BayesianSVM" ] = [" AnalyticVI" , " AnalyticSVI" ]
41
+ compat[" SVGP" ][" LogisticSoftMax" ] = [" AnalyticVI" , " AnalyticSVI" ]
36
42
37
43
const SUITE = BenchmarkGroup ([" Models" ])
38
44
Random. seed! (1234 )
39
- D = 20 ; N = 3000
45
+ D = 20 ;
46
+ N = 3000 ;
40
47
data = CSV. read (" benchmarkdata.csv" )
41
- X = Matrix (data[:,1 : D])
42
- y_key = Dict (" Gaussian" => :y_reg ," StudentT" => :y_reg ," BayesianSVM" => :y_class ," Logistic" => :y_class ," LogisticSoftMax" => :y_multi )
43
- n_ind = 50 ; batchsize = 50 ; ν = 5.0
44
- convertl (lname:: String ) = lname* (lname != " BayesianSVM" ? " Likelihood" : " " )* " (" * (lname == " StudentT" ? " ν" : " " )* " )"
45
- converti (iname:: String ) = iname* " (" * (iname == " AnalyticSVI" ? " batchsize" : " " )* " )"
48
+ X = Matrix (data[:, 1 : D])
49
+ y_key = Dict (
50
+ " Gaussian" => :y_reg ,
51
+ " StudentT" => :y_reg ,
52
+ " BayesianSVM" => :y_class ,
53
+ " Logistic" => :y_class ,
54
+ " LogisticSoftMax" => :y_multi ,
55
+ )
56
+ n_ind = 50 ;
57
+ batchsize = 50 ;
58
+ ν = 5.0 ;
59
+ function convertl (lname:: String )
60
+ return lname *
61
+ (lname != " BayesianSVM" ? " Likelihood" : " " ) *
62
+ " (" *
63
+ (lname == " StudentT" ? " ν" : " " ) *
64
+ " )"
65
+ end
66
+ converti (iname:: String ) = iname * " (" * (iname == " AnalyticSVI" ? " batchsize" : " " ) * " )"
46
67
add_ind (mname:: String ) = mname == " SVGP" ? " ,n_ind" : " "
47
- kernel = RBFKernel ([2.0 ], variance= 1.0 ,dim= D)
68
+ kernel = RBFKernel ([2.0 ]; variance= 1.0 , dim= D)
48
69
models = Dict {String,Dict{String,Dict{String,AbstractGP}}} ()
49
70
SUITE[" Models" ] = BenchmarkGroup (modelnames)
50
71
for model in String .(keys (compat))
@@ -56,19 +77,49 @@ for model in String.(keys(compat))
56
77
for i in compat[model][likelihood]
57
78
SUITE[" Models" ][model][likelihood][i] = BenchmarkGroup (funcs)
58
79
if model == " GP"
59
- models[model][likelihood][i] = eval (Meta. parse (model* " (X,Vector(data[:$((y_key[likelihood])) ]),kernel,atfrequency=1)" ))
60
- SUITE[" Models" ][model][likelihood][i][" init" ] = eval (Meta. parse (" @benchmarkable $model (\$ X,y_train,\$ kernel,atfrequency=1) setup=(y_train = Vector(\$ D[:\$ ((y_key[likelihood]))])" ))
80
+ models[model][likelihood][i] = eval (
81
+ Meta. parse (
82
+ model *
83
+ " (X,Vector(data[:$((y_key[likelihood])) ]),kernel,atfrequency=1)" ,
84
+ ),
85
+ )
86
+ SUITE[" Models" ][model][likelihood][i][" init" ] = eval (
87
+ Meta. parse (
88
+ " @benchmarkable $model (\$ X,y_train,\$ kernel,atfrequency=1) setup=(y_train = Vector(\$ D[:\$ ((y_key[likelihood]))])" ,
89
+ ),
90
+ )
61
91
else
62
92
# println(Meta.parse(model*"(X,y[\"$likelihood\"],kernel,$(convertl(likelihood)) ,$(converti(i))$(add_ind(model)),atfrequency=1)"))
63
- models[model][likelihood][i] = eval (Meta. parse (model* " (X,Vector(data[:$((y_key[likelihood])) ]),kernel,$(convertl (likelihood)) ,$(converti (i))$(add_ind (model)) ,atfrequency=1)" ))
64
- SUITE[" Models" ][model][likelihood][i][" init" ] = eval (Meta. parse (" @benchmarkable $model (\$ X,y_train,\$ kernel,$(convertl (likelihood)) ,$(converti (i)) $(add_ind (model)) ,atfrequency=1) setup=(y_train = Vector(\$ data[:\$ ((y_key[likelihood]))]))" ))
93
+ models[model][likelihood][i] = eval (
94
+ Meta. parse (
95
+ model *
96
+ " (X,Vector(data[:$((y_key[likelihood])) ]),kernel,$(convertl (likelihood)) ,$(converti (i))$(add_ind (model)) ,atfrequency=1)" ,
97
+ ),
98
+ )
99
+ SUITE[" Models" ][model][likelihood][i][" init" ] = eval (
100
+ Meta. parse (
101
+ " @benchmarkable $model (\$ X,y_train,\$ kernel,$(convertl (likelihood)) ,$(converti (i)) $(add_ind (model)) ,atfrequency=1) setup=(y_train = Vector(\$ data[:\$ ((y_key[likelihood]))]))" ,
102
+ ),
103
+ )
65
104
end
66
- SUITE[" Models" ][model][likelihood][i][" elbo" ] = @benchmarkable ELBO (gpmodel) setup= (gpmodel= deepcopy ($ (models[model][likelihood][i])))
67
- SUITE[" Models" ][model][likelihood][i][" computematrices" ] = @benchmarkable AGP. computeMatrices! (gpmodel) setup= (gpmodel= deepcopy ($ (models[model][likelihood][i])))
68
- SUITE[" Models" ][model][likelihood][i][" updatevariational" ] = @benchmarkable AGP. variational_updates! (gpmodel) setup= (gpmodel= deepcopy ($ (models[model][likelihood][i])))
69
- SUITE[" Models" ][model][likelihood][i][" updatehyperparam" ] = @benchmarkable AGP. update_hyperparameters! (gpmodel) setup= (gpmodel= deepcopy ($ (models[model][likelihood][i])))
70
- SUITE[" Models" ][model][likelihood][i][" predic" ] = @benchmarkable predict_y (gpmodel,$ X) setup= (gpmodel= deepcopy ($ (models[model][likelihood][i])))
71
- SUITE[" Models" ][model][likelihood][i][" predicproba" ] = @benchmarkable proba_y (gpmodel,$ X) setup= (gpmodel= deepcopy ($ (models[model][likelihood][i])))
105
+ SUITE[" Models" ][model][likelihood][i][" elbo" ] = @benchmarkable ELBO (gpmodel) setup = (
106
+ gpmodel = deepcopy ($ (models[model][likelihood][i]))
107
+ )
108
+ SUITE[" Models" ][model][likelihood][i][" computematrices" ] = @benchmarkable AGP. computeMatrices! (
109
+ gpmodel
110
+ ) setup = (gpmodel = deepcopy ($ (models[model][likelihood][i])))
111
+ SUITE[" Models" ][model][likelihood][i][" updatevariational" ] = @benchmarkable AGP. variational_updates! (
112
+ gpmodel
113
+ ) setup = (gpmodel = deepcopy ($ (models[model][likelihood][i])))
114
+ SUITE[" Models" ][model][likelihood][i][" updatehyperparam" ] = @benchmarkable AGP. update_hyperparameters! (
115
+ gpmodel
116
+ ) setup = (gpmodel = deepcopy ($ (models[model][likelihood][i])))
117
+ SUITE[" Models" ][model][likelihood][i][" predic" ] = @benchmarkable predict_y (
118
+ gpmodel, $ X
119
+ ) setup = (gpmodel = deepcopy ($ (models[model][likelihood][i])))
120
+ SUITE[" Models" ][model][likelihood][i][" predicproba" ] = @benchmarkable proba_y (
121
+ gpmodel, $ X
122
+ ) setup = (gpmodel = deepcopy ($ (models[model][likelihood][i])))
72
123
end
73
124
end
74
125
end
0 commit comments