-
-
Notifications
You must be signed in to change notification settings - Fork 216
Closed
Description
Attached jl produces attached log when run with
julia .\zg-logsumexp.jl
Apologies, haven't tested with 1.0. Zygote pkg is added from master in this repo.
using Test
using Printf
using Zygote
using BenchmarkTools
# logsumexp()
function logsumexp(x::Array{Float64,1})
A = maximum(x);
ema = exp.(x .- A);
sema = sum(ema);
log(sema) + A;
end
r = rand(5);
@test logsumexp(r) ≈ log(sum(exp.(r))) atol=1.0e-8
@printf("logsumexp: %f = %f\n", logsumexp(r), log(sum(exp.(r))));
# logsumexp()
function logsumexp_both(x::Array{Float64,1})
A = maximum(x);
ema = exp.(x .- A);
sema = sum(ema);
l = log(sema) + A;
Jacobian = ema ./ sema;
return (l, Jacobian)
end
x = rand(100)
"Timing logsumexp_both" |> println
@btime logsumexp_both(x)
"Timing zygote" |> println
@btime Zygote.gradient(logsumexp, x)
Metadata
Metadata
Assignees
Labels
No labels