-
Notifications
You must be signed in to change notification settings - Fork 37
Closed
Description
init has been updated mainly in #489 and then in #485 to match recent changes in Bijectors.jl .Do we need to update the multisample methods
Lines 311 to 324 in e6dd4ef
| ################################ | |
| # Multi-sample initialisations # | |
| ################################ | |
| function inittrans(rng, dist::UnivariateDistribution, n::Int) | |
| return Bijectors.invlink(dist, randrealuni(rng, n)) | |
| end | |
| function inittrans(rng, dist::MultivariateDistribution, n::Int) | |
| return Bijectors.invlink(dist, randrealuni(rng, size(dist)[1], n)) | |
| end | |
| function inittrans(rng, dist::MatrixDistribution, n::Int) | |
| return Bijectors.invlink(dist, [randrealuni(rng, size(dist)...) for _ in 1:n]) | |
| end | |
This is mainly for MatrixDistribution and Distribution{CholeskyVariate} which currently lead to StackOverFlow with multisample init. That's because calls keep bouncing in generic Bijectors.transform. One straightforward fix would be
function inittrans(rng, dist::MatrixDistribution, n::Int)
# Get the size of the unconstrained vector
b = link_transform(dist)
sz = Bijectors.output_size(b, size(dist))
return Bijectors.invlink.(Ref(dist), [randrealuni(rng, sz...) for _ in 1:n])
end
function inittrans(rng, dist::Distribution{<:CholeskyVariate}, n::Int)
# Get the size of the unconstrained vector
b = link_transform(dist)
sz = Bijectors.output_size(b, size(dist))
return Bijectors.invlink.(Ref(dist), [randrealuni(rng, sz...) for _ in 1:n])
endBut are these methods ever needed? IIUC only MultiVariateDistribution uses the multisample init in assume. Just putting this out there. cc @torfjelde
Metadata
Metadata
Assignees
Labels
No labels