Turing.jl icon indicating copy to clipboard operation
Turing.jl copied to clipboard

Bijector error with VI and arraydist/filldist

Open ElOceanografo opened this issue 2 years ago • 2 comments

I'm working on a model that includes a couple of random matrices. The model runs as expected with MCMC:

using Turing

@model function mwemodel(μX, Y)
    X ~ arraydist(Normal.(μX, 0.5))
    n ~ filldist(Exponential(5), size(μX, 2))
    μY = X * n
    Y ~ MvNormal(μY, 0.5)
end

μX = randn(5, 4)
n = randn(4)
Y = μX * n
m = mwemodel(μX, Y)

sample(m,  NUTS(), 100) # runs as expected

...but when I try using VI to fit it, I get the following error:

julia> vi(m, ADVI())
┌ Info: [ADVI] Should only be seen once: optimizer created for θ
└   objectid(θ) = 0x10db53830ef6caa7
ERROR: MethodError: no method matching (::Inverse{Bijectors.TruncatedBijector{2, Float64, Float64}, 2})(::Vector{ForwardDiff.Dual{ForwardDiff.Tag{AdvancedVI.var"#f#19"{AdvancedVI.ELBO, ADVI{AdvancedVI.ForwardDiffAD{40}}, MultivariateTransformed{DistributionsAD.TuringDiagMvNormal{Vector{Float64}, Vector{Float64}}, Stacked{Tuple{Inverse{Bijectors.TruncatedBijector{2, Float64, Float64}, 2}, Bijectors.Exp{1}}, Tuple{UnitRange{Int64}, UnitRange{Int64}}}}, Turing.Variational.var"#logπ#2"{DynamicPPL.Model{typeof(mwemodel), (:μX, :Y), (), (), Tuple{Matrix{Float64}, Vector{Float64}}, Tuple{}, DynamicPPL.DefaultContext}, DynamicPPL.TypedVarInfo{NamedTuple{(:X, :n), Tuple{DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:X, Tuple{}}, Int64}, Vector{DistributionsAD.MatrixOfUnivariate{Continuous, Normal{Float64}, Matrix{Normal{Float64}}}}, Vector{AbstractPPL.VarName{:X, Tuple{}}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}, DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:n, Tuple{}}, Int64}, Vector{Product{Continuous, Exponential{Float64}, FillArrays.Fill{Exponential{Float64}, 1, Tuple{Base.OneTo{Int64}}}}}, Vector{AbstractPPL.VarName{:n, Tuple{}}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}}}, Float64}}, Tuple{Int64}}, Float64}, Float64, 10}})
Closest candidates are:
  (::Inverse{var"#s112", N} where {var"#s112"<:(Bijectors.TruncatedBijector{2, T1, T2} where {T1, T2}), N})(::AbstractMatrix{var"#s111"} where var"#s111"<:Real) at C:\Users\sam.urmy\.julia\packages\Bijectors\EELoe\src\bijectors\truncated.jl:90
  (::Inverse{var"#s112", N} where {var"#s112"<:(Bijectors.TruncatedBijector{2, T1, T2} where {T1, T2}), N})(::AbstractArray{var"#s111", N} where {var"#s111"<:(AbstractMatrix{var"#s110"} where var"#s110"<:Real), N}) at C:\Users\sam.urmy\.julia\packages\Bijectors\EELoe\src\bijectors\truncated.jl:101
Stacktrace:
  [1] forward(b::Inverse{Bijectors.TruncatedBijector{2, Float64, Float64}, 2}, x::Vector{ForwardDiff.Dual{ForwardDiff.Tag{AdvancedVI.var"#f#19"{AdvancedVI.ELBO, ADVI{AdvancedVI.ForwardDiffAD{40}}, MultivariateTransformed{DistributionsAD.TuringDiagMvNormal{Vector{Float64}, Vector{Float64}}, Stacked{Tuple{Inverse{Bijectors.TruncatedBijector{2, Float64, Float64}, 2}, Bijectors.Exp{1}}, Tuple{UnitRange{Int64}, UnitRange{Int64}}}}, Turing.Variational.var"#logπ#2"{DynamicPPL.Model{typeof(mwemodel), (:μX, :Y), (), (), Tuple{Matrix{Float64}, Vector{Float64}}, Tuple{}, DynamicPPL.DefaultContext}, DynamicPPL.TypedVarInfo{NamedTuple{(:X, :n), Tuple{DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:X, Tuple{}}, Int64}, Vector{DistributionsAD.MatrixOfUnivariate{Continuous, Normal{Float64}, Matrix{Normal{Float64}}}}, Vector{AbstractPPL.VarName{:X, Tuple{}}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}, DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:n, Tuple{}}, Int64}, Vector{Product{Continuous, Exponential{Float64}, FillArrays.Fill{Exponential{Float64}, 1, Tuple{Base.OneTo{Int64}}}}}, Vector{AbstractPPL.VarName{:n, Tuple{}}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}}}, Float64}}, Tuple{Int64}}, Float64}, Float64, 10}})
    @ Bijectors C:\Users\sam.urmy\.julia\packages\Bijectors\EELoe\src\interface.jl:102
  [2] macro expansion
    @ .\array.jl:0 [inlined]
  [3] forward(b::Stacked{Tuple{Inverse{Bijectors.TruncatedBijector{2, Float64, Float64}, 2}, Bijectors.Exp{1}}, Tuple{UnitRange{Int64}, UnitRange{Int64}}}, x::Vector{ForwardDiff.Dual{ForwardDiff.Tag{AdvancedVI.var"#f#19"{AdvancedVI.ELBO, ADVI{AdvancedVI.ForwardDiffAD{40}}, MultivariateTransformed{DistributionsAD.TuringDiagMvNormal{Vector{Float64}, Vector{Float64}}, Stacked{Tuple{Inverse{Bijectors.TruncatedBijector{2, Float64, Float64}, 2}, Bijectors.Exp{1}}, Tuple{UnitRange{Int64}, UnitRange{Int64}}}}, Turing.Variational.var"#logπ#2"{DynamicPPL.Model{typeof(mwemodel), (:μX, :Y), (), (), Tuple{Matrix{Float64}, Vector{Float64}}, Tuple{}, DynamicPPL.DefaultContext}, DynamicPPL.TypedVarInfo{NamedTuple{(:X, :n), Tuple{DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:X, Tuple{}}, Int64}, Vector{DistributionsAD.MatrixOfUnivariate{Continuous, Normal{Float64}, Matrix{Normal{Float64}}}}, Vector{AbstractPPL.VarName{:X, Tuple{}}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}, DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:n, Tuple{}}, Int64}, Vector{Product{Continuous, Exponential{Float64}, FillArrays.Fill{Exponential{Float64}, 1, Tuple{Base.OneTo{Int64}}}}}, Vector{AbstractPPL.VarName{:n, Tuple{}}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}}}, Float64}}, Tuple{Int64}}, Float64}, Float64, 10}})
    @ Bijectors C:\Users\sam.urmy\.julia\packages\Bijectors\EELoe\src\bijectors\stacked.jl:141
  [4] _forward(td::MultivariateTransformed{DistributionsAD.TuringDiagMvNormal{Vector{ForwardDiff.Dual{ForwardDiff.Tag{AdvancedVI.var"#f#19"{AdvancedVI.ELBO, ADVI{AdvancedVI.ForwardDiffAD{40}}, MultivariateTransformed{DistributionsAD.TuringDiagMvNormal{Vector{Float64}, Vector{Float64}}, Stacked{Tuple{Inverse{Bijectors.TruncatedBijector{2, Float64, Float64}, 2}, Bijectors.Exp{1}}, Tuple{UnitRange{Int64}, UnitRange{Int64}}}}, Turing.Variational.var"#logπ#2"{DynamicPPL.Model{typeof(mwemodel), (:μX, :Y), (), (), Tuple{Matrix{Float64}, Vector{Float64}}, Tuple{}, DynamicPPL.DefaultContext}, DynamicPPL.TypedVarInfo{NamedTuple{(:X, :n), Tuple{DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:X, Tuple{}}, Int64}, Vector{DistributionsAD.MatrixOfUnivariate{Continuous, Normal{Float64}, Matrix{Normal{Float64}}}}, Vector{AbstractPPL.VarName{:X, Tuple{}}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}, DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:n, Tuple{}}, Int64}, Vector{Product{Continuous, Exponential{Float64}, FillArrays.Fill{Exponential{Float64}, 1, Tuple{Base.OneTo{Int64}}}}}, Vector{AbstractPPL.VarName{:n, Tuple{}}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}}}, Float64}}, Tuple{Int64}}, Float64}, Float64, 10}}, Vector{ForwardDiff.Dual{ForwardDiff.Tag{AdvancedVI.var"#f#19"{AdvancedVI.ELBO, ADVI{AdvancedVI.ForwardDiffAD{40}}, MultivariateTransformed{DistributionsAD.TuringDiagMvNormal{Vector{Float64}, Vector{Float64}}, Stacked{Tuple{Inverse{Bijectors.TruncatedBijector{2, Float64, Float64}, 2}, Bijectors.Exp{1}}, Tuple{UnitRange{Int64}, UnitRange{Int64}}}}, Turing.Variational.var"#logπ#2"{DynamicPPL.Model{typeof(mwemodel), (:μX, :Y), (), (), Tuple{Matrix{Float64}, Vector{Float64}}, Tuple{}, DynamicPPL.DefaultContext}, DynamicPPL.TypedVarInfo{NamedTuple{(:X, :n), Tuple{DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:X, Tuple{}}, Int64}, Vector{DistributionsAD.MatrixOfUnivariate{Continuous, Normal{Float64}, Matrix{Normal{Float64}}}}, Vector{AbstractPPL.VarName{:X, Tuple{}}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}, DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:n, Tuple{}}, Int64}, Vector{Product{Continuous, Exponential{Float64}, FillArrays.Fill{Exponential{Float64}, 1, Tuple{Base.OneTo{Int64}}}}}, Vector{AbstractPPL.VarName{:n, Tuple{}}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}}}, Float64}}, Tuple{Int64}}, Float64}, Float64, 10}}}, Stacked{Tuple{Inverse{Bijectors.TruncatedBijector{2, Float64, Float64}, 2}, Bijectors.Exp{1}}, Tuple{UnitRange{Int64}, UnitRange{Int64}}}}, x::Vector{ForwardDiff.Dual{ForwardDiff.Tag{AdvancedVI.var"#f#19"{AdvancedVI.ELBO, ADVI{AdvancedVI.ForwardDiffAD{40}}, MultivariateTransformed{DistributionsAD.TuringDiagMvNormal{Vector{Float64}, Vector{Float64}}, Stacked{Tuple{Inverse{Bijectors.TruncatedBijector{2, Float64, Float64}, 2}, Bijectors.Exp{1}}, Tuple{UnitRange{Int64}, UnitRange{Int64}}}}, Turing.Variational.var"#logπ#2"{DynamicPPL.Model{typeof(mwemodel), (:μX, :Y), (), (), Tuple{Matrix{Float64}, Vector{Float64}}, Tuple{}, DynamicPPL.DefaultContext}, DynamicPPL.TypedVarInfo{NamedTuple{(:X, :n), Tuple{DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:X, Tuple{}}, Int64}, Vector{DistributionsAD.MatrixOfUnivariate{Continuous, Normal{Float64}, Matrix{Normal{Float64}}}}, Vector{AbstractPPL.VarName{:X, Tuple{}}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}, DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:n, Tuple{}}, Int64}, Vector{Product{Continuous, Exponential{Float64}, FillArrays.Fill{Exponential{Float64}, 1, Tuple{Base.OneTo{Int64}}}}}, Vector{AbstractPPL.VarName{:n, Tuple{}}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}}}, Float64}}, Tuple{Int64}}, Float64}, Float64, 10}})
    @ Bijectors C:\Users\sam.urmy\.julia\packages\Bijectors\EELoe\src\transformed_distribution.jl:235
  [5] forward(rng::Random._GLOBAL_RNG, td::MultivariateTransformed{DistributionsAD.TuringDiagMvNormal{Vector{ForwardDiff.Dual{ForwardDiff.Tag{AdvancedVI.var"#f#19"{AdvancedVI.ELBO, ADVI{AdvancedVI.ForwardDiffAD{40}}, MultivariateTransformed{DistributionsAD.TuringDiagMvNormal{Vector{Float64}, Vector{Float64}}, Stacked{Tuple{Inverse{Bijectors.TruncatedBijector{2, Float64, Float64}, 2}, Bijectors.Exp{1}}, Tuple{UnitRange{Int64}, UnitRange{Int64}}}}, Turing.Variational.var"#logπ#2"{DynamicPPL.Model{typeof(mwemodel), (:μX, :Y), (), (), Tuple{Matrix{Float64}, Vector{Float64}}, Tuple{}, DynamicPPL.DefaultContext}, DynamicPPL.TypedVarInfo{NamedTuple{(:X, :n), Tuple{DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:X, Tuple{}}, Int64}, Vector{DistributionsAD.MatrixOfUnivariate{Continuous, Normal{Float64}, Matrix{Normal{Float64}}}}, Vector{AbstractPPL.VarName{:X, Tuple{}}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}, DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:n, Tuple{}}, Int64}, Vector{Product{Continuous, Exponential{Float64}, FillArrays.Fill{Exponential{Float64}, 1, Tuple{Base.OneTo{Int64}}}}}, Vector{AbstractPPL.VarName{:n, Tuple{}}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}}}, Float64}}, Tuple{Int64}}, Float64}, Float64, 10}}, Vector{ForwardDiff.Dual{ForwardDiff.Tag{AdvancedVI.var"#f#19"{AdvancedVI.ELBO, ADVI{AdvancedVI.ForwardDiffAD{40}}, MultivariateTransformed{DistributionsAD.TuringDiagMvNormal{Vector{Float64}, Vector{Float64}}, Stacked{Tuple{Inverse{Bijectors.TruncatedBijector{2, Float64, Float64}, 2}, Bijectors.Exp{1}}, Tuple{UnitRange{Int64}, UnitRange{Int64}}}}, Turing.Variational.var"#logπ#2"{DynamicPPL.Model{typeof(mwemodel), (:μX, :Y), (), (), Tuple{Matrix{Float64}, Vector{Float64}}, Tuple{}, DynamicPPL.DefaultContext}, DynamicPPL.TypedVarInfo{NamedTuple{(:X, :n), Tuple{DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:X, Tuple{}}, Int64}, Vector{DistributionsAD.MatrixOfUnivariate{Continuous, Normal{Float64}, Matrix{Normal{Float64}}}}, Vector{AbstractPPL.VarName{:X, Tuple{}}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}, DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:n, Tuple{}}, Int64}, Vector{Product{Continuous, Exponential{Float64}, FillArrays.Fill{Exponential{Float64}, 1, Tuple{Base.OneTo{Int64}}}}}, Vector{AbstractPPL.VarName{:n, Tuple{}}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}}}, Float64}}, Tuple{Int64}}, Float64}, Float64, 10}}}, Stacked{Tuple{Inverse{Bijectors.TruncatedBijector{2, Float64, Float64}, 2}, Bijectors.Exp{1}}, Tuple{UnitRange{Int64}, UnitRange{Int64}}}})
    @ Bijectors C:\Users\sam.urmy\.julia\packages\Bijectors\EELoe\src\transformed_distribution.jl:244
  [6] (::AdvancedVI.ELBO)(rng::Random._GLOBAL_RNG, alg::ADVI{AdvancedVI.ForwardDiffAD{40}}, q::MultivariateTransformed{DistributionsAD.TuringDiagMvNormal{Vector{ForwardDiff.Dual{ForwardDiff.Tag{AdvancedVI.var"#f#19"{AdvancedVI.ELBO, ADVI{AdvancedVI.ForwardDiffAD{40}}, MultivariateTransformed{DistributionsAD.TuringDiagMvNormal{Vector{Float64}, Vector{Float64}}, Stacked{Tuple{Inverse{Bijectors.TruncatedBijector{2, Float64, Float64}, 2}, Bijectors.Exp{1}}, Tuple{UnitRange{Int64}, UnitRange{Int64}}}}, Turing.Variational.var"#logπ#2"{DynamicPPL.Model{typeof(mwemodel), (:μX, :Y), (), (), Tuple{Matrix{Float64}, Vector{Float64}}, Tuple{}, DynamicPPL.DefaultContext}, DynamicPPL.TypedVarInfo{NamedTuple{(:X, :n), Tuple{DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:X, Tuple{}}, Int64}, Vector{DistributionsAD.MatrixOfUnivariate{Continuous, Normal{Float64}, Matrix{Normal{Float64}}}}, Vector{AbstractPPL.VarName{:X, Tuple{}}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}, DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:n, Tuple{}}, Int64}, Vector{Product{Continuous, Exponential{Float64}, FillArrays.Fill{Exponential{Float64}, 1, Tuple{Base.OneTo{Int64}}}}}, Vector{AbstractPPL.VarName{:n, Tuple{}}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}}}, Float64}}, Tuple{Int64}}, Float64}, Float64, 10}}, Vector{ForwardDiff.Dual{ForwardDiff.Tag{AdvancedVI.var"#f#19"{AdvancedVI.ELBO, ADVI{AdvancedVI.ForwardDiffAD{40}}, MultivariateTransformed{DistributionsAD.TuringDiagMvNormal{Vector{Float64}, Vector{Float64}}, Stacked{Tuple{Inverse{Bijectors.TruncatedBijector{2, Float64, Float64}, 2}, Bijectors.Exp{1}}, Tuple{UnitRange{Int64}, UnitRange{Int64}}}}, Turing.Variational.var"#logπ#2"{DynamicPPL.Model{typeof(mwemodel), (:μX, :Y), (), (), Tuple{Matrix{Float64}, Vector{Float64}}, Tuple{}, DynamicPPL.DefaultContext}, DynamicPPL.TypedVarInfo{NamedTuple{(:X, :n), Tuple{DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:X, Tuple{}}, Int64}, Vector{DistributionsAD.MatrixOfUnivariate{Continuous, Normal{Float64}, Matrix{Normal{Float64}}}}, Vector{AbstractPPL.VarName{:X, Tuple{}}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}, DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:n, Tuple{}}, Int64}, Vector{Product{Continuous, Exponential{Float64}, FillArrays.Fill{Exponential{Float64}, 1, Tuple{Base.OneTo{Int64}}}}}, Vector{AbstractPPL.VarName{:n, Tuple{}}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}}}, Float64}}, Tuple{Int64}}, Float64}, Float64, 10}}}, Stacked{Tuple{Inverse{Bijectors.TruncatedBijector{2, Float64, Float64}, 2}, Bijectors.Exp{1}}, Tuple{UnitRange{Int64}, UnitRange{Int64}}}}, logπ::Turing.Variational.var"#logπ#2"{DynamicPPL.Model{typeof(mwemodel), (:μX, :Y), (), (), Tuple{Matrix{Float64}, Vector{Float64}}, Tuple{}, DynamicPPL.DefaultContext}, DynamicPPL.TypedVarInfo{NamedTuple{(:X, :n), Tuple{DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:X, Tuple{}}, Int64}, Vector{DistributionsAD.MatrixOfUnivariate{Continuous, Normal{Float64}, Matrix{Normal{Float64}}}}, Vector{AbstractPPL.VarName{:X, Tuple{}}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}, DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:n, Tuple{}}, Int64}, Vector{Product{Continuous, Exponential{Float64}, FillArrays.Fill{Exponential{Float64}, 1, Tuple{Base.OneTo{Int64}}}}}, Vector{AbstractPPL.VarName{:n, Tuple{}}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}}}, Float64}}, num_samples::Int64)
    @ AdvancedVI C:\Users\sam.urmy\.julia\packages\AdvancedVI\yCVq7\src\advi.jl:85
  [7] (::AdvancedVI.ELBO)(alg::ADVI{AdvancedVI.ForwardDiffAD{40}}, q::MultivariateTransformed{DistributionsAD.TuringDiagMvNormal{Vector{ForwardDiff.Dual{ForwardDiff.Tag{AdvancedVI.var"#f#19"{AdvancedVI.ELBO, ADVI{AdvancedVI.ForwardDiffAD{40}}, MultivariateTransformed{DistributionsAD.TuringDiagMvNormal{Vector{Float64}, Vector{Float64}}, Stacked{Tuple{Inverse{Bijectors.TruncatedBijector{2, Float64, Float64}, 2}, Bijectors.Exp{1}}, Tuple{UnitRange{Int64}, UnitRange{Int64}}}}, Turing.Variational.var"#logπ#2"{DynamicPPL.Model{typeof(mwemodel), (:μX, :Y), (), (), Tuple{Matrix{Float64}, Vector{Float64}}, Tuple{}, DynamicPPL.DefaultContext}, DynamicPPL.TypedVarInfo{NamedTuple{(:X, :n), Tuple{DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:X, Tuple{}}, Int64}, Vector{DistributionsAD.MatrixOfUnivariate{Continuous, Normal{Float64}, Matrix{Normal{Float64}}}}, Vector{AbstractPPL.VarName{:X, Tuple{}}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}, DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:n, Tuple{}}, Int64}, Vector{Product{Continuous, Exponential{Float64}, FillArrays.Fill{Exponential{Float64}, 1, Tuple{Base.OneTo{Int64}}}}}, Vector{AbstractPPL.VarName{:n, Tuple{}}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}}}, Float64}}, Tuple{Int64}}, Float64}, Float64, 10}}, Vector{ForwardDiff.Dual{ForwardDiff.Tag{AdvancedVI.var"#f#19"{AdvancedVI.ELBO, ADVI{AdvancedVI.ForwardDiffAD{40}}, MultivariateTransformed{DistributionsAD.TuringDiagMvNormal{Vector{Float64}, Vector{Float64}}, Stacked{Tuple{Inverse{Bijectors.TruncatedBijector{2, Float64, Float64}, 2}, Bijectors.Exp{1}}, Tuple{UnitRange{Int64}, UnitRange{Int64}}}}, Turing.Variational.var"#logπ#2"{DynamicPPL.Model{typeof(mwemodel), (:μX, :Y), (), (), Tuple{Matrix{Float64}, Vector{Float64}}, Tuple{}, DynamicPPL.DefaultContext}, DynamicPPL.TypedVarInfo{NamedTuple{(:X, :n), Tuple{DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:X, Tuple{}}, Int64}, Vector{DistributionsAD.MatrixOfUnivariate{Continuous, Normal{Float64}, Matrix{Normal{Float64}}}}, Vector{AbstractPPL.VarName{:X, Tuple{}}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}, DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:n, Tuple{}}, Int64}, Vector{Product{Continuous, Exponential{Float64}, FillArrays.Fill{Exponential{Float64}, 1, Tuple{Base.OneTo{Int64}}}}}, Vector{AbstractPPL.VarName{:n, Tuple{}}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}}}, Float64}}, Tuple{Int64}}, Float64}, Float64, 10}}}, Stacked{Tuple{Inverse{Bijectors.TruncatedBijector{2, Float64, Float64}, 2}, Bijectors.Exp{1}}, Tuple{UnitRange{Int64}, UnitRange{Int64}}}}, logπ::Function, num_samples::Int64; kwargs::Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
    @ AdvancedVI C:\Users\sam.urmy\.julia\packages\AdvancedVI\yCVq7\src\objectives.jl:6
  [8] (::AdvancedVI.ELBO)(alg::ADVI{AdvancedVI.ForwardDiffAD{40}}, q::MultivariateTransformed{DistributionsAD.TuringDiagMvNormal{Vector{ForwardDiff.Dual{ForwardDiff.Tag{AdvancedVI.var"#f#19"{AdvancedVI.ELBO, ADVI{AdvancedVI.ForwardDiffAD{40}}, MultivariateTransformed{DistributionsAD.TuringDiagMvNormal{Vector{Float64}, Vector{Float64}}, Stacked{Tuple{Inverse{Bijectors.TruncatedBijector{2, Float64, Float64}, 2}, Bijectors.Exp{1}}, Tuple{UnitRange{Int64}, UnitRange{Int64}}}}, Turing.Variational.var"#logπ#2"{DynamicPPL.Model{typeof(mwemodel), (:μX, :Y), (), (), Tuple{Matrix{Float64}, Vector{Float64}}, Tuple{}, DynamicPPL.DefaultContext}, DynamicPPL.TypedVarInfo{NamedTuple{(:X, :n), Tuple{DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:X, Tuple{}}, Int64}, Vector{DistributionsAD.MatrixOfUnivariate{Continuous, Normal{Float64}, Matrix{Normal{Float64}}}}, Vector{AbstractPPL.VarName{:X, Tuple{}}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}, DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:n, Tuple{}}, Int64}, Vector{Product{Continuous, Exponential{Float64}, FillArrays.Fill{Exponential{Float64}, 1, Tuple{Base.OneTo{Int64}}}}}, Vector{AbstractPPL.VarName{:n, Tuple{}}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}}}, Float64}}, Tuple{Int64}}, Float64}, Float64, 10}}, Vector{ForwardDiff.Dual{ForwardDiff.Tag{AdvancedVI.var"#f#19"{AdvancedVI.ELBO, ADVI{AdvancedVI.ForwardDiffAD{40}}, MultivariateTransformed{DistributionsAD.TuringDiagMvNormal{Vector{Float64}, Vector{Float64}}, Stacked{Tuple{Inverse{Bijectors.TruncatedBijector{2, Float64, Float64}, 2}, Bijectors.Exp{1}}, Tuple{UnitRange{Int64}, UnitRange{Int64}}}}, Turing.Variational.var"#logπ#2"{DynamicPPL.Model{typeof(mwemodel), (:μX, :Y), (), (), Tuple{Matrix{Float64}, Vector{Float64}}, Tuple{}, DynamicPPL.DefaultContext}, DynamicPPL.TypedVarInfo{NamedTuple{(:X, :n), Tuple{DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:X, Tuple{}}, Int64}, Vector{DistributionsAD.MatrixOfUnivariate{Continuous, Normal{Float64}, Matrix{Normal{Float64}}}}, Vector{AbstractPPL.VarName{:X, Tuple{}}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}, DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:n, Tuple{}}, Int64}, Vector{Product{Continuous, Exponential{Float64}, FillArrays.Fill{Exponential{Float64}, 1, Tuple{Base.OneTo{Int64}}}}}, Vector{AbstractPPL.VarName{:n, Tuple{}}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}}}, Float64}}, Tuple{Int64}}, Float64}, Float64, 10}}}, Stacked{Tuple{Inverse{Bijectors.TruncatedBijector{2, Float64, Float64}, 2}, Bijectors.Exp{1}}, Tuple{UnitRange{Int64}, UnitRange{Int64}}}}, logπ::Function, num_samples::Int64)
    @ AdvancedVI C:\Users\sam.urmy\.julia\packages\AdvancedVI\yCVq7\src\objectives.jl:6
  [9] (::AdvancedVI.var"#f#19"{AdvancedVI.ELBO, ADVI{AdvancedVI.ForwardDiffAD{40}}, MultivariateTransformed{DistributionsAD.TuringDiagMvNormal{Vector{Float64}, Vector{Float64}}, Stacked{Tuple{Inverse{Bijectors.TruncatedBijector{2, Float64, Float64}, 2}, Bijectors.Exp{1}}, Tuple{UnitRange{Int64}, UnitRange{Int64}}}}, Turing.Variational.var"#logπ#2"{DynamicPPL.Model{typeof(mwemodel), (:μX, :Y), (), (), Tuple{Matrix{Float64}, Vector{Float64}}, Tuple{}, DynamicPPL.DefaultContext}, DynamicPPL.TypedVarInfo{NamedTuple{(:X, :n), Tuple{DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:X, Tuple{}}, Int64}, Vector{DistributionsAD.MatrixOfUnivariate{Continuous, Normal{Float64}, Matrix{Normal{Float64}}}}, Vector{AbstractPPL.VarName{:X, Tuple{}}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}, DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:n, Tuple{}}, Int64}, Vector{Product{Continuous, Exponential{Float64}, FillArrays.Fill{Exponential{Float64}, 1, Tuple{Base.OneTo{Int64}}}}}, Vector{AbstractPPL.VarName{:n, Tuple{}}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}}}, Float64}}, Tuple{Int64}})(θ_::Vector{ForwardDiff.Dual{ForwardDiff.Tag{AdvancedVI.var"#f#19"{AdvancedVI.ELBO, ADVI{AdvancedVI.ForwardDiffAD{40}}, MultivariateTransformed{DistributionsAD.TuringDiagMvNormal{Vector{Float64}, Vector{Float64}}, Stacked{Tuple{Inverse{Bijectors.TruncatedBijector{2, Float64, Float64}, 2}, Bijectors.Exp{1}}, Tuple{UnitRange{Int64}, UnitRange{Int64}}}}, Turing.Variational.var"#logπ#2"{DynamicPPL.Model{typeof(mwemodel), (:μX, :Y), (), (), Tuple{Matrix{Float64}, Vector{Float64}}, Tuple{}, DynamicPPL.DefaultContext}, DynamicPPL.TypedVarInfo{NamedTuple{(:X, :n), Tuple{DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:X, Tuple{}}, Int64}, Vector{DistributionsAD.MatrixOfUnivariate{Continuous, Normal{Float64}, Matrix{Normal{Float64}}}}, Vector{AbstractPPL.VarName{:X, Tuple{}}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}, DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:n, Tuple{}}, Int64}, Vector{Product{Continuous, Exponential{Float64}, FillArrays.Fill{Exponential{Float64}, 1, Tuple{Base.OneTo{Int64}}}}}, Vector{AbstractPPL.VarName{:n, Tuple{}}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}}}, Float64}}, Tuple{Int64}}, Float64}, Float64, 10}})
    @ AdvancedVI C:\Users\sam.urmy\.julia\packages\AdvancedVI\yCVq7\src\AdvancedVI.jl:140
 [10] chunk_mode_gradient!(result::DiffResults.MutableDiffResult{1, Float64, Tuple{Vector{Float64}}}, f::AdvancedVI.var"#f#19"{AdvancedVI.ELBO, ADVI{AdvancedVI.ForwardDiffAD{40}}, MultivariateTransformed{DistributionsAD.TuringDiagMvNormal{Vector{Float64}, Vector{Float64}}, Stacked{Tuple{Inverse{Bijectors.TruncatedBijector{2, Float64, Float64}, 2}, Bijectors.Exp{1}}, Tuple{UnitRange{Int64}, UnitRange{Int64}}}}, Turing.Variational.var"#logπ#2"{DynamicPPL.Model{typeof(mwemodel), (:μX, :Y), (), (), Tuple{Matrix{Float64}, Vector{Float64}}, Tuple{}, DynamicPPL.DefaultContext}, DynamicPPL.TypedVarInfo{NamedTuple{(:X, :n), Tuple{DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:X, Tuple{}}, Int64}, Vector{DistributionsAD.MatrixOfUnivariate{Continuous, Normal{Float64}, Matrix{Normal{Float64}}}}, Vector{AbstractPPL.VarName{:X, Tuple{}}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}, DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:n, Tuple{}}, Int64}, Vector{Product{Continuous, Exponential{Float64}, FillArrays.Fill{Exponential{Float64}, 1, Tuple{Base.OneTo{Int64}}}}}, Vector{AbstractPPL.VarName{:n, Tuple{}}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}}}, Float64}}, Tuple{Int64}}, x::Vector{Float64}, cfg::ForwardDiff.GradientConfig{ForwardDiff.Tag{AdvancedVI.var"#f#19"{AdvancedVI.ELBO, ADVI{AdvancedVI.ForwardDiffAD{40}}, MultivariateTransformed{DistributionsAD.TuringDiagMvNormal{Vector{Float64}, Vector{Float64}}, Stacked{Tuple{Inverse{Bijectors.TruncatedBijector{2, Float64, Float64}, 2}, Bijectors.Exp{1}}, Tuple{UnitRange{Int64}, UnitRange{Int64}}}}, Turing.Variational.var"#logπ#2"{DynamicPPL.Model{typeof(mwemodel), (:μX, :Y), (), (), Tuple{Matrix{Float64}, Vector{Float64}}, Tuple{}, DynamicPPL.DefaultContext}, DynamicPPL.TypedVarInfo{NamedTuple{(:X, :n), Tuple{DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:X, Tuple{}}, Int64}, Vector{DistributionsAD.MatrixOfUnivariate{Continuous, Normal{Float64}, Matrix{Normal{Float64}}}}, Vector{AbstractPPL.VarName{:X, Tuple{}}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}, DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:n, Tuple{}}, Int64}, Vector{Product{Continuous, Exponential{Float64}, FillArrays.Fill{Exponential{Float64}, 1, Tuple{Base.OneTo{Int64}}}}}, Vector{AbstractPPL.VarName{:n, Tuple{}}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}}}, Float64}}, Tuple{Int64}}, Float64}, Float64, 10, Vector{ForwardDiff.Dual{ForwardDiff.Tag{AdvancedVI.var"#f#19"{AdvancedVI.ELBO, ADVI{AdvancedVI.ForwardDiffAD{40}}, MultivariateTransformed{DistributionsAD.TuringDiagMvNormal{Vector{Float64}, Vector{Float64}}, Stacked{Tuple{Inverse{Bijectors.TruncatedBijector{2, Float64, Float64}, 2}, Bijectors.Exp{1}}, Tuple{UnitRange{Int64}, UnitRange{Int64}}}}, Turing.Variational.var"#logπ#2"{DynamicPPL.Model{typeof(mwemodel), (:μX, :Y), (), (), Tuple{Matrix{Float64}, Vector{Float64}}, Tuple{}, DynamicPPL.DefaultContext}, DynamicPPL.TypedVarInfo{NamedTuple{(:X, :n), Tuple{DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:X, Tuple{}}, Int64}, Vector{DistributionsAD.MatrixOfUnivariate{Continuous, Normal{Float64}, Matrix{Normal{Float64}}}}, Vector{AbstractPPL.VarName{:X, Tuple{}}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}, DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:n, Tuple{}}, Int64}, Vector{Product{Continuous, Exponential{Float64}, FillArrays.Fill{Exponential{Float64}, 1, Tuple{Base.OneTo{Int64}}}}}, Vector{AbstractPPL.VarName{:n, Tuple{}}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}}}, Float64}}, Tuple{Int64}}, Float64}, Float64, 10}}})
    @ ForwardDiff C:\Users\sam.urmy\.julia\packages\ForwardDiff\UDrkY\src\gradient.jl:150
 [11] gradient!(result::DiffResults.MutableDiffResult{1, Float64, Tuple{Vector{Float64}}}, f::AdvancedVI.var"#f#19"{AdvancedVI.ELBO, ADVI{AdvancedVI.ForwardDiffAD{40}}, MultivariateTransformed{DistributionsAD.TuringDiagMvNormal{Vector{Float64}, Vector{Float64}}, Stacked{Tuple{Inverse{Bijectors.TruncatedBijector{2, Float64, Float64}, 2}, Bijectors.Exp{1}}, Tuple{UnitRange{Int64}, UnitRange{Int64}}}}, Turing.Variational.var"#logπ#2"{DynamicPPL.Model{typeof(mwemodel), (:μX, :Y), (), (), Tuple{Matrix{Float64}, Vector{Float64}}, Tuple{}, DynamicPPL.DefaultContext}, DynamicPPL.TypedVarInfo{NamedTuple{(:X, :n), Tuple{DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:X, Tuple{}}, Int64}, Vector{DistributionsAD.MatrixOfUnivariate{Continuous, Normal{Float64}, Matrix{Normal{Float64}}}}, Vector{AbstractPPL.VarName{:X, Tuple{}}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}, DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:n, Tuple{}}, Int64}, Vector{Product{Continuous, Exponential{Float64}, FillArrays.Fill{Exponential{Float64}, 1, Tuple{Base.OneTo{Int64}}}}}, Vector{AbstractPPL.VarName{:n, Tuple{}}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}}}, Float64}}, Tuple{Int64}}, x::Vector{Float64}, cfg::ForwardDiff.GradientConfig{ForwardDiff.Tag{AdvancedVI.var"#f#19"{AdvancedVI.ELBO, ADVI{AdvancedVI.ForwardDiffAD{40}}, MultivariateTransformed{DistributionsAD.TuringDiagMvNormal{Vector{Float64}, Vector{Float64}}, Stacked{Tuple{Inverse{Bijectors.TruncatedBijector{2, Float64, Float64}, 2}, Bijectors.Exp{1}}, Tuple{UnitRange{Int64}, UnitRange{Int64}}}}, Turing.Variational.var"#logπ#2"{DynamicPPL.Model{typeof(mwemodel), (:μX, :Y), (), (), Tuple{Matrix{Float64}, Vector{Float64}}, Tuple{}, DynamicPPL.DefaultContext}, DynamicPPL.TypedVarInfo{NamedTuple{(:X, :n), Tuple{DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:X, Tuple{}}, Int64}, Vector{DistributionsAD.MatrixOfUnivariate{Continuous, Normal{Float64}, Matrix{Normal{Float64}}}}, Vector{AbstractPPL.VarName{:X, Tuple{}}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}, DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:n, Tuple{}}, Int64}, Vector{Product{Continuous, Exponential{Float64}, FillArrays.Fill{Exponential{Float64}, 1, Tuple{Base.OneTo{Int64}}}}}, Vector{AbstractPPL.VarName{:n, Tuple{}}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}}}, Float64}}, Tuple{Int64}}, Float64}, Float64, 10, Vector{ForwardDiff.Dual{ForwardDiff.Tag{AdvancedVI.var"#f#19"{AdvancedVI.ELBO, ADVI{AdvancedVI.ForwardDiffAD{40}}, MultivariateTransformed{DistributionsAD.TuringDiagMvNormal{Vector{Float64}, Vector{Float64}}, Stacked{Tuple{Inverse{Bijectors.TruncatedBijector{2, Float64, Float64}, 2}, Bijectors.Exp{1}}, Tuple{UnitRange{Int64}, UnitRange{Int64}}}}, Turing.Variational.var"#logπ#2"{DynamicPPL.Model{typeof(mwemodel), (:μX, :Y), (), (), Tuple{Matrix{Float64}, Vector{Float64}}, Tuple{}, DynamicPPL.DefaultContext}, DynamicPPL.TypedVarInfo{NamedTuple{(:X, :n), Tuple{DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:X, Tuple{}}, Int64}, Vector{DistributionsAD.MatrixOfUnivariate{Continuous, Normal{Float64}, Matrix{Normal{Float64}}}}, Vector{AbstractPPL.VarName{:X, Tuple{}}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}, DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:n, Tuple{}}, Int64}, Vector{Product{Continuous, Exponential{Float64}, FillArrays.Fill{Exponential{Float64}, 1, Tuple{Base.OneTo{Int64}}}}}, Vector{AbstractPPL.VarName{:n, Tuple{}}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}}}, Float64}}, Tuple{Int64}}, Float64}, Float64, 10}}}, ::Val{true})
    @ ForwardDiff C:\Users\sam.urmy\.julia\packages\ForwardDiff\UDrkY\src\gradient.jl:39
 [12] gradient!(result::DiffResults.MutableDiffResult{1, Float64, Tuple{Vector{Float64}}}, f::AdvancedVI.var"#f#19"{AdvancedVI.ELBO, ADVI{AdvancedVI.ForwardDiffAD{40}}, MultivariateTransformed{DistributionsAD.TuringDiagMvNormal{Vector{Float64}, Vector{Float64}}, Stacked{Tuple{Inverse{Bijectors.TruncatedBijector{2, Float64, Float64}, 2}, Bijectors.Exp{1}}, Tuple{UnitRange{Int64}, UnitRange{Int64}}}}, Turing.Variational.var"#logπ#2"{DynamicPPL.Model{typeof(mwemodel), (:μX, :Y), (), (), Tuple{Matrix{Float64}, Vector{Float64}}, Tuple{}, DynamicPPL.DefaultContext}, DynamicPPL.TypedVarInfo{NamedTuple{(:X, :n), Tuple{DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:X, Tuple{}}, Int64}, Vector{DistributionsAD.MatrixOfUnivariate{Continuous, Normal{Float64}, Matrix{Normal{Float64}}}}, Vector{AbstractPPL.VarName{:X, Tuple{}}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}, DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:n, Tuple{}}, Int64}, Vector{Product{Continuous, Exponential{Float64}, FillArrays.Fill{Exponential{Float64}, 1, Tuple{Base.OneTo{Int64}}}}}, Vector{AbstractPPL.VarName{:n, Tuple{}}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}}}, Float64}}, Tuple{Int64}}, x::Vector{Float64}, cfg::ForwardDiff.GradientConfig{ForwardDiff.Tag{AdvancedVI.var"#f#19"{AdvancedVI.ELBO, ADVI{AdvancedVI.ForwardDiffAD{40}}, MultivariateTransformed{DistributionsAD.TuringDiagMvNormal{Vector{Float64}, Vector{Float64}}, Stacked{Tuple{Inverse{Bijectors.TruncatedBijector{2, Float64, Float64}, 2}, Bijectors.Exp{1}}, Tuple{UnitRange{Int64}, UnitRange{Int64}}}}, Turing.Variational.var"#logπ#2"{DynamicPPL.Model{typeof(mwemodel), (:μX, :Y), (), (), Tuple{Matrix{Float64}, Vector{Float64}}, Tuple{}, DynamicPPL.DefaultContext}, DynamicPPL.TypedVarInfo{NamedTuple{(:X, :n), Tuple{DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:X, Tuple{}}, Int64}, Vector{DistributionsAD.MatrixOfUnivariate{Continuous, Normal{Float64}, Matrix{Normal{Float64}}}}, Vector{AbstractPPL.VarName{:X, Tuple{}}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}, DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:n, Tuple{}}, Int64}, Vector{Product{Continuous, Exponential{Float64}, FillArrays.Fill{Exponential{Float64}, 1, Tuple{Base.OneTo{Int64}}}}}, Vector{AbstractPPL.VarName{:n, Tuple{}}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}}}, Float64}}, Tuple{Int64}}, Float64}, Float64, 10, Vector{ForwardDiff.Dual{ForwardDiff.Tag{AdvancedVI.var"#f#19"{AdvancedVI.ELBO, ADVI{AdvancedVI.ForwardDiffAD{40}}, MultivariateTransformed{DistributionsAD.TuringDiagMvNormal{Vector{Float64}, Vector{Float64}}, Stacked{Tuple{Inverse{Bijectors.TruncatedBijector{2, Float64, Float64}, 2}, Bijectors.Exp{1}}, Tuple{UnitRange{Int64}, UnitRange{Int64}}}}, Turing.Variational.var"#logπ#2"{DynamicPPL.Model{typeof(mwemodel), (:μX, :Y), (), (), Tuple{Matrix{Float64}, Vector{Float64}}, Tuple{}, DynamicPPL.DefaultContext}, DynamicPPL.TypedVarInfo{NamedTuple{(:X, :n), Tuple{DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:X, Tuple{}}, Int64}, Vector{DistributionsAD.MatrixOfUnivariate{Continuous, Normal{Float64}, Matrix{Normal{Float64}}}}, Vector{AbstractPPL.VarName{:X, Tuple{}}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}, DynamicPPL.Metadata{Dict{AbstractPPL.VarName{:n, Tuple{}}, Int64}, Vector{Product{Continuous, Exponential{Float64}, FillArrays.Fill{Exponential{Float64}, 1, Tuple{Base.OneTo{Int64}}}}}, Vector{AbstractPPL.VarName{:n, Tuple{}}}, Vector{Float64}, Vector{Set{DynamicPPL.Selector}}}}}, Float64}}, Tuple{Int64}}, Float64}, Float64, 10}}})
    @ ForwardDiff C:\Users\sam.urmy\.julia\packages\ForwardDiff\UDrkY\src\gradient.jl:35
 [13] grad!(vo::AdvancedVI.ELBO, alg::ADVI{AdvancedVI.ForwardDiffAD{40}}, q::MultivariateTransformed{DistributionsAD.TuringDiagMvNormal{Vector{Float64}, Vector{Float64}}, Stacked{Tuple{Inverse{Bijectors.TruncatedBijector{2, Float64, Float64}, 2}, Bijectors.Exp{1}}, Tuple{UnitRange{Int64}, UnitRange{Int64}}}}, model::Function, θ::Vector{Float64}, out::DiffResults.MutableDiffResult{1, Float64, Tuple{Vector{Float64}}}, args::Int64)
    @ AdvancedVI C:\Users\sam.urmy\.julia\packages\AdvancedVI\yCVq7\src\AdvancedVI.jl:149
 [14] macro expansion
    @ C:\Users\sam.urmy\.julia\packages\AdvancedVI\yCVq7\src\AdvancedVI.jl:213 [inlined]
 [15] macro expansion
    @ .\timing.jl:287 [inlined]
 [16] optimize!(vo::AdvancedVI.ELBO, alg::ADVI{AdvancedVI.ForwardDiffAD{40}}, q::MultivariateTransformed{DistributionsAD.TuringDiagMvNormal{Vector{Float64}, Vector{Float64}}, Stacked{Tuple{Inverse{Bijectors.TruncatedBijector{2, Float64, Float64}, 2}, Bijectors.Exp{1}}, Tuple{UnitRange{Int64}, UnitRange{Int64}}}}, model::Function, θ::Vector{Float64}; optimizer::AdvancedVI.TruncatedADAGrad)
    @ AdvancedVI C:\Users\sam.urmy\.julia\packages\AdvancedVI\yCVq7\src\AdvancedVI.jl:212
 [17] vi(model::DynamicPPL.Model{typeof(mwemodel), (:μX, :Y), (), (), Tuple{Matrix{Float64}, Vector{Float64}}, Tuple{}, DynamicPPL.DefaultContext}, alg::ADVI{AdvancedVI.ForwardDiffAD{40}}, q::MultivariateTransformed{DistributionsAD.TuringDiagMvNormal{Vector{Float64}, Vector{Float64}}, Stacked{Tuple{Inverse{Bijectors.TruncatedBijector{2, Float64, Float64}, 2}, Bijectors.Exp{1}}, Tuple{UnitRange{Int64}, UnitRange{Int64}}}}; optimizer::AdvancedVI.TruncatedADAGrad)
    @ Turing.Variational C:\Users\sam.urmy\.julia\packages\Turing\uMQmD\src\variational\advi.jl:111
 [18] vi(model::DynamicPPL.Model{typeof(mwemodel), (:μX, :Y), (), (), Tuple{Matrix{Float64}, Vector{Float64}}, Tuple{}, DynamicPPL.DefaultContext}, alg::ADVI{AdvancedVI.ForwardDiffAD{40}}; optimizer::AdvancedVI.TruncatedADAGrad)
    @ Turing.Variational C:\Users\sam.urmy\.julia\packages\Turing\uMQmD\src\variational\advi.jl:96
 [19] vi(model::DynamicPPL.Model{typeof(mwemodel), (:μX, :Y), (), (), Tuple{Matrix{Float64}, Vector{Float64}}, Tuple{}, DynamicPPL.DefaultContext}, alg::ADVI{AdvancedVI.ForwardDiffAD{40}})
    @ Turing.Variational C:\Users\sam.urmy\.julia\packages\Turing\uMQmD\src\variational\advi.jl:95
 [20] top-level scope
    @ REPL[8]:1

...which I unfortunately can't make heads or tails of. I'm using Turing v0.18.0 and Bijectors v0.9.10.

ElOceanografo avatar Oct 21 '21 00:10 ElOceanografo

Seems to be the same as https://github.com/TuringLang/Bijectors.jl/issues/200.

devmotion avatar Oct 21 '21 00:10 devmotion

So if it is, should be fixed by https://github.com/TuringLang/Turing.jl/pull/1545.

ElOceanografo avatar Oct 21 '21 00:10 ElOceanografo

Likely fixed by https://github.com/TuringLang/Turing.jl/pull/1545

yebai avatar Nov 12 '22 20:11 yebai