Forward difference gradient has the same number of function calls as central difference
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 35/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Đình trệ
- Công nghệ
- julia
- Lĩnh vực
- performance
Hướng nghiên cứu
Bắt đầu trong src/gradients.jl, tại constructor của GradientCache và phần mã finite_difference_gradient! quanh các dòng 138 và 144-145. Theo dõi cách fx được cung cấp cho sai phân tiến và so sánh hành vi gọi hàm với sai phân trung tâm. Hoàn thành khi sai phân tiến có thể tái sử dụng f(x) thông qua cache và yêu cầu ít lần gọi hàm hơn, đồng thời hiểu được các tác động về hiệu năng của cách tiếp cận đã chọn.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Changes to gradients.jl made in fc5a08e removed any way to reduce the number of function calls made when using forward difference for gradients as compared to central difference. The finite_difference_gradient! functions assume that f(x) will be provided in the GradientCache for forward differences, but the only constructor for GradientCache forces fx = nothing.
Here are the lines returning the only cache the constructor will give you:
https://github.com/JuliaDiff/FiniteDiff.jl/blob/9945e7d7f567dc2eb6a95a714b1de9782d0ecea4/src/gradients.jl#L52-L53
I can think of three ways to fix it:
- There could be a constructor that accepts an input of
fxreturns the a cache with fx, although fc5a08e was trying to get rid of extra constructors. - Instead of using the type
Nothingfor the first parameter of the returned GradientCache, useUnion{Nothing,returntype}so the user can manually update it later. - Or, don't bother using the cache and change the following line
https://github.com/JuliaDiff/FiniteDiff.jl/blob/9945e7d7f567dc2eb6a95a714b1de9782d0ecea4/src/gradients.jl#L138
to_fx, c1, c2, c3 = cache.fx, cache.c1, cache.c2, cache.c3and then before this for loop:
https://github.com/JuliaDiff/FiniteDiff.jl/blob/9945e7d7f567dc2eb6a95a714b1de9782d0ecea4/src/gradients.jl#L144-L145
add something along the lines offx = _fx == Nothing ? f(x) : _fx
2 makes the most sense to me, but I'm not sure what the performance implications are.
- Ngôn ngữ chính
- Julia
- Star
- 304
- Fork
- 42
- Merge trung bình
- 24 phút
- Pull request đã merge (30 ngày)
- 2
Chuẩn bị môi trường
Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.
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 JuliaDiff/FiniteDiff.jl
-
tagbot-manual
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 55/100
JuliaDiff/FiniteDiff.jl#218 ·
-
Feature request: vectorized finite difference evaluationCó thể đã có người làm @ChrisRackauckas-Claude đã nhận 190 ngày trước. Đang mở
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 45/100
JuliaDiff/FiniteDiff.jl#210 · 1 bình luận · 1 reaction ·
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 45/100
JuliaDiff/FiniteDiff.jl#199 · 3 bình luận ·
-
StridedArraysĐang mở
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 25/100
JuliaDiff/FiniteDiff.jl#158 · 1 bình luận ·
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 25/100
JuliaDiff/FiniteDiff.jl#157 · 1 bình luận ·
Tất cả issue của JuliaDiff/FiniteDiff.jl
Issue tương tự
-
Độ khó 2/5 Dưới một giờ Mức phù hợp với người mới 78/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
CliMA/ClimaAtmos.jl#4891 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
tagbot-manual
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 75/100
tshort/StaticCompiler.jl#191 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
SciML/SciMLSensitivity.jl#1703 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
JuliaGPU/GPUCompiler.jl#1008 ·
Maintainer thường phản hồi trong vòng 1 ngày