Skip to content

Commit 0b4f085

Browse files
committed
Merge branch 'master-dev'
2 parents ee6172c + 94ba979 commit 0b4f085

File tree

12 files changed

+137
-38
lines changed

12 files changed

+137
-38
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
*.json
2+
Manifest.toml

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name = "KernelFunctions"
1+
name = "KernelFunctions"
22
uuid = "ec8451be-7e33-11e9-00cf-bbf324bd1392"
33
version = "0.1.0"
44

benchmark/MLKernels.jl

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
using MLKernels
2+
3+
SUITE["MLKernels"] = BenchmarkGroup()
4+
5+
mlkernelnames = ["SquaredExponentialKernel"]
6+
kernels=Dict{String,MLKernels.Kernel}()
7+
for k in mlkernelnames
8+
SUITE["MLKernels"][k] = BenchmarkGroup()
9+
kernels[k] = eval(Meta.parse("MLKernels."*k*"(alpha)"))
10+
end
11+
12+
for k in mlkernelnames
13+
SUITE["MLKernels"][k]["k(X,Y)"] = @benchmarkable MLKernels.kernelmatrix($(kernels[k]),$X,$Y)
14+
# SUITE["MLKernels"][k][kt]["k!(X,Y)"] = @benchmarkable MLKernels.kernelmatrix!(KXY,$(kernels[k][kt]),$X,$Y) setup=(KXY=copy($KXY))
15+
SUITE["MLKernels"][k]["k(X)"] = @benchmarkable MLKernels.kernelmatrix($(kernels[k]),$X)
16+
# SUITE["MLKernels"][k][kt]["k!(X)"] = @benchmarkable MLKernels.kernelmatrix!(KX,$(kernels[k][kt]),$X) setup=(KX=copy($KX))
17+
# SUITE["MLKernels"][k][kt]["kdiag(X)"] = @benchmarkable MLKernels.kerneldiagmatrix($(kernels[k][kt]),$X)
18+
# SUITE["MLKernels"][k][kt]["kdiag!(X)"] = @benchmarkable MLKernels.kerneldiagmatrix!(kX,$(kernels[k][kt]),$X) setup=(kX=copy($kX))
19+
end
20+
# results = run(SUITE)

benchmark/benchmarks.jl

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
using BenchmarkTools
2+
using Random
3+
using Distances, LinearAlgebra
4+
5+
const SUITE = BenchmarkGroup()
6+
7+
Random.seed!(1234)
8+
9+
dim = 50
10+
N1 = 1000; N2 = 500;
11+
alpha = 2.0
12+
13+
X = rand(Float64,N1,dim)
14+
Y = rand(Float64,N2,dim)
15+
16+
KXY = rand(Float64,N1,N2)
17+
KX = rand(Float64,N1,N1)
18+
sKX = Symmetric(rand(Float64,N1,N1))
19+
kX = rand(Float64,N1)
20+
21+
include("kernelmatrix.jl")
22+
include("MLKernels.jl")

benchmark/kernelmatrix.jl

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
using KernelFunctions
2+
3+
SUITE["KernelFunctions"] = BenchmarkGroup()
4+
5+
kernelnames = ["SquaredExponentialKernel"]
6+
kerneltypes = ["ARD","ISO"]
7+
kernels=Dict{String,Dict{String,KernelFunctions.Kernel}}()
8+
for k in kernelnames
9+
kernels[k] = Dict{String,KernelFunctions.Kernel}()
10+
SUITE["KernelFunctions"][k] = BenchmarkGroup()
11+
for kt in kerneltypes
12+
SUITE["KernelFunctions"][k][kt] = BenchmarkGroup()
13+
kernels[k][kt] = eval(Meta.parse("KernelFunctions."*k*"("*(kt == "ARD" ? "alpha*ones(Float64,dim)" : "alpha" )*")"))
14+
end
15+
end
16+
17+
for k in kernelnames
18+
for kt in kerneltypes
19+
SUITE["KernelFunctions"][k][kt]["k(X,Y)"] = @benchmarkable KernelFunctions.kernelmatrix($(kernels[k][kt]),$X,$Y,obsdim=1)
20+
# SUITE["KernelFunctions"][k][kt]["k!(X,Y)"] = @benchmarkable KernelFunctions.kernelmatrix!(KXY,$(kernels[k][kt]),$X,$Y) setup=(KXY=copy($KXY))
21+
SUITE["KernelFunctions"][k][kt]["k(X)"] = @benchmarkable KernelFunctions.kernelmatrix($(kernels[k][kt]),$X,obsdim=1)
22+
# SUITE["KernelFunctions"][k][kt]["k!(X)"] = @benchmarkable KernelFunctions.kernelmatrix!(KX,$(kernels[k][kt]),$X) setup=(KX=copy($KX))
23+
# SUITE["KernelFunctions"][k][kt]["kdiag(X)"] = @benchmarkable KernelFunctions.kerneldiagmatrix($(kernels[k][kt]),$X)
24+
# SUITE["KernelFunctions"][k][kt]["kdiag!(X)"] = @benchmarkable KernelFunctions.kerneldiagmatrix!(kX,$(kernels[k][kt]),$X) setup=(kX=copy($kX))
25+
end
26+
end
27+
# results = run(SUITE)

docs/.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
build/
2+
site/

docs/Project.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
[deps]
2+
Documenter = "e30172f5-a6a5-5a46-863b-614d45cd2de4"

docs/make.jl

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
using Documenter
2+
using KernelFunctions
3+
4+
makedocs(
5+
sitename = "KernelFunctions",
6+
format = Documenter.HTML(),
7+
modules = [KernelFunctions]
8+
)
9+
10+
# Documenter can also automatically deploy documentation to gh-pages.
11+
# See "Hosting Documentation" and deploydocs() in the Documenter manual
12+
# for more information.
13+
#=deploydocs(
14+
repo = "<repository url>"
15+
)=#

docs/src/index.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# KernelFunctions.jl
2+
3+
Documentation for KernelFunctions.jl
4+
5+
*** In Construction ***

src/kernelmatrix.jl

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,14 +28,14 @@ end
2828
In-place version of `kernelmatrix` where pre-allocated matrix `K` will be overwritten with the kernel matrix.
2929
"""
3030
function kernelmatrix!(
31-
K::Matrix{T₁},
31+
K::AbstractMatrix{T₁},
3232
κ::Kernel{T},
3333
X::AbstractMatrix{T₂},
3434
Y::AbstractMatrix{T₃};
3535
obsdim::Int = defaultobs
3636
) where {T,T₁,T₂,T₃}
3737
#TODO Check dimension consistency
38-
_kappamatrix!(κ, pairwise!(K,metric(κ), X, Y, dims=obsdim))
38+
_kappamatrix!(κ, pairwise!(K, metric(κ), X, Y, dims=obsdim))
3939
end
4040

4141

@@ -47,7 +47,7 @@ function kernelmatrix!(
4747
symmetrize::Bool = true
4848
) where {T,T₁<:Real,T₂<:Real}
4949
#TODO Check dimension consistency
50-
_symmetric_kappamatrix!(κ,pairwise!(metric(κ),X,dims=obsdim),symmetrize)
50+
_symmetric_kappamatrix!(κ,pairwise!(K, metric(κ), X, dims=obsdim), symmetrize)
5151
end
5252

5353
# Convenience Methods ======================================================================
@@ -85,7 +85,7 @@ function kernelmatrix(
8585
obsdim::Int = defaultobs,
8686
symmetrize::Bool = true
8787
) where {T,T₁<:Real}
88-
return _symmetric_kappamatrix!(κ,pairwise(metric(κ),X,dims=obsdim),symmetrize)
88+
return kernelmatrix!(Matrix{promote_float(T,T₁)}(undef,size(X,obsdim),size(X,obsdim)),κ,X,obsdim=obsdim,symmetrize=symmetrize)
8989
end
9090

9191
"""
@@ -100,7 +100,7 @@ function kernelmatrix(
100100
Y::AbstractMatrix{T₂};
101101
obsdim=defaultobs
102102
) where {T,T₁<:Real,T₂<:Real}
103-
_kappamatrix!(κ, pairwise(metric(κ), X, Y, dims=obsdim))
103+
kernelmatrix!(Matrix{promote_float(T,T₁,T₂)}(undef,size(X,obsdim),size(Y,obsdim)),κ,X,Y,obsdim=obsdim)
104104
end
105105

106106

0 commit comments

Comments
 (0)