Closed ClaudMor closed 3 years ago
The problem is that apparently KernelDensityEstimate does not support dual numbers:
MethodError: no method matching (::BallTreeDensity)(::Array{ForwardDiff.Dual{...},1})
So I don't think there's anything that Turing can do here.
You could try to use a different AD backend but I am pretty sure that Tracker and ReverseDiff will have the same problems, and I assume Zygote might fail as well. Alternatively, you can define a custom adjoint for the AD backend that you use to avoid that the backend has to differentiate through logpdf(::kde_prior, ::Real)
.
I'm closing this now since it seems to be an AD rather than Turing issue. Please reopen if you need additional help.
You can also use the new discussion section for questions that are not about issues or bugs in Turing itself.
Hello,
Because Distributions.jl doesn't implement all the distributions I need as priors, I thought it could be a good idea to fit a kde from KernelDensityEstimate.jl on samples that I know coming from a distribution that isn't implemented in Distributions.jl. Anyway, although I tried to follow the Advanced Usage guide on definign new distributions, I keep getting the error in the title.
I managed to reproduce the behaviour in this MWE:
But If try to use the
fitted_priors
coming from KernelDensityEstimate.jl, I get the following error:Because it could be related to how KernelDensityEstimate.jl works, I'd also like to pull in @dehann .
Thanks in advance