Specifying Domain of Kernels
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 25/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Necesita aclaración
- Estado de actividad
- Estancado
- Stack tecnológico
- julia
- Área
- machine-learning
Línea de trabajo
Comienza comparando Proposal 1 y Proposal 2 con los constructores de kernels existentes y los lugares actuales en los que los kernels aceptan una métrica. Traza cómo se necesita la información del dominio para las operaciones de kernels y la construcción de Random Fourier Feature. Se considera terminado cuando el proyecto tenga un diseño acordado para la especificación del dominio y las interfaces de los kernels afectadas lo sigan de forma coherente.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Proposal 1
# Euclidean domain with D dimensions.
struct Euclidean
D::Int
end
dim(domain::Euclidean) = domain.D
"""
DomainKernel{Tkernel<:Kernel, Tdomain}
A kernel with additional information specifying the domain of the kernel.
This provides a complete specification of a kernel, whereas most kernels by themselves do
not provide the domain information necessary to construct e.g. Random Fourier Feature
approximations to themselves.
"""
struct DomainKernel{Tkernel<:Kernel, Tdomain} <: Kernel
kernel::Tkernel
domain::Tdomain
end
kernelmatrix(k::DomainKernel, x::AbstractVector) = kernelmatrix(k.kernel, x)
function kernelmatrix(k::DomainKernel, x::AbstractVector, x′::AbstractVector)
return kernelmatrix(k.kernel, x, x′)
end
Proposal 2
struct AutoEuclidean end
struct Euclidean
D::Int
end
struct SEKernel{Tmetric_space} <: Kernel
metric_space::Tmetric_space
end
SEKernel() = SEKernel(AutoEuclidean())
This version would be quite breaking, but I'd rather we didn't worry about that, and instead focus on which one we think constitutes the better solution, and go from there.
I'm personally leaning more towards the second option -- it feel cleaner on some level. The DomainKernel idea would probably work, but my gut is that it'll be messy in practice. You would have to write
DomainKernel(SEKernel(), Euclidean(5)) + 0.5 * with_lengthscale(DomainKernel(SEKernel(), Euclidean(5)))
vs
SEKernel(Euclidean(5)) + 0.5 * with_lengthscale(SEKernel(Euclidean(5)))
My feeling is that the latter is easier to read.
It also avoid some redundancy -- we currently let users specify the metric in a lot of kernels. Having the metric and domain of the kernel specified in different places feels strange to me.
- Lenguaje dominante
- Julia
- Estrellas
- 276
- Forks
- 42
- Merge medio
- 3 d 12 h
- PR fusionados (30 d)
- 2
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de JuliaGaussianProcesses/KernelFunctions.jl
-
Future plans?Abierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
JuliaGaussianProcesses/KernelFunctions.jl#585 · 8 comentarios · 3 reacciones ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 30/100
-
Dificultad 3/5 1-2 días Aptitud para principiantes 48/100
JuliaGaussianProcesses/KernelFunctions.jl#571 · 1 reacción ·
-
new kernel
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 25/100
JuliaGaussianProcesses/KernelFunctions.jl#533 · 1 reacción ·
Todos los issues de JuliaGaussianProcesses/KernelFunctions.jl
Issues similares
-
lux
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
JuliaGraphs/GraphNeuralNetworks.jl#732 ·
Los mantenedores suelen responder en 2 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Los mantenedores suelen responder en 1 día
-
erfinv(::Float16) and erfcinv(::Float16) are wrong for abs(x) <= 0.75 (erfinv(Float16(0)) == 0.2201)Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
JuliaMath/SpecialFunctions.jl#571 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 67/100