Specifying Domain of Kernels
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 25/100
- Loại issue
- Tính năng
- Độ rõ ràng
- Cần làm rõ
- Mức độ hoạt động
- Đình trệ
- Công nghệ
- julia
- Lĩnh vực
- machine-learning
Hướng nghiên cứu
Bắt đầu bằng cách so sánh Proposal 1 và Proposal 2 với các kernel constructors hiện có và những nơi hiện tại mà kernels chấp nhận một metric. Truy vết cách thông tin domain cần thiết cho các kernel operations và việc xây dựng Random Fourier Feature. Công việc được xem là hoàn tất khi dự án có một domain-specification design đã được thống nhất và các kernel interfaces bị ảnh hưởng tuân theo thiết kế đó một cách nhất quán.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
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.
- Ngôn ngữ chính
- Julia
- Star
- 276
- Fork
- 42
- Merge trung bình
- 3 ngày 12 giờ
- Pull request đã merge (30 ngày)
- 2
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của JuliaGaussianProcesses/KernelFunctions.jl
-
Future plans?Đang mở
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 25/100
JuliaGaussianProcesses/KernelFunctions.jl#585 · 8 bình luận · 3 reaction ·
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 30/100
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 48/100
JuliaGaussianProcesses/KernelFunctions.jl#571 · 1 reaction ·
-
new kernel
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 25/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 25/100
JuliaGaussianProcesses/KernelFunctions.jl#533 · 1 reaction ·
Tất cả issue của JuliaGaussianProcesses/KernelFunctions.jl
Issue tương tự
-
lux
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
JuliaGraphs/GraphNeuralNetworks.jl#732 ·
Maintainer thường phản hồi trong vòng 2 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
Maintainer thường phản hồi trong vòng 1 ngày
-
erfinv(::Float16) and erfcinv(::Float16) are wrong for abs(x) <= 0.75 (erfinv(Float16(0)) == 0.2201)Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
JuliaMath/SpecialFunctions.jl#571 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 74/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 67/100