@@ -14,37 +14,58 @@ const AGP = AugmentedGaussianProcesses
1414
1515# # Benchmark
1616
17-
18-
1917compat = 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" ])
2531compat[" VGP" ] = Dict{String,Vector{String}}()
2632compat[" VGP" ][" StudentT" ] = [" AnalyticVI" ]
2733compat[" VGP" ][" Logistic" ] = [" AnalyticVI" ]
2834compat[" VGP" ][" BayesianSVM" ] = [" AnalyticVI" ]
2935compat[" VGP" ][" LogisticSoftMax" ] = [" AnalyticVI" ]
3036compat[" 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" ]
3642
3743const SUITE = BenchmarkGroup([" Models" ])
3844Random. seed!(1234 )
39- D = 20 ; N = 3000
45+ D = 20 ;
46+ N = 3000 ;
4047data = 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" : " " ) * " )"
4667add_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)
4869models = Dict{String,Dict{String,Dict{String,AbstractGP}}}()
4970SUITE[" Models" ] = BenchmarkGroup(modelnames)
5071for model in String.(keys(compat))
@@ -56,19 +77,49 @@ for model in String.(keys(compat))
5677 for i in compat[model][likelihood]
5778 SUITE[" Models" ][model][likelihood][i] = BenchmarkGroup(funcs)
5879 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+ )
6191 else
6292 # 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+ )
65104 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])))
72123 end
73124 end
74125end
0 commit comments