Open david-vicente opened 3 years ago
I also noticed that the signatures of the constructors for MOARGP
, MOSVGP
an MOVGP
require that the input labels variable y
is a AbstractVector{<:AbstractArray}
, so we can't pass a Matrix
.
Hi, you're right, there's unfortunately no example for multiple output.
Given your provided example you can do
MOVGP(X, [y1, y2], kernel, Gaussian Likelihood(), AnalyticVI(), 2)
If you want to have an analytic solution I would however recommend you having a look at https://github.com/JuliaGaussianProcesses/AbstractGPs.jl/pull/30
Trying your suggestion gives me:
BoundsError: attempt to access 1-element Array{Int64,1} at index [2]
Stacktrace:
[1] getindex at ./array.jl:809 [inlined]
[2] #76 at /home/myuser/.julia/packages/AugmentedGaussianProcesses/93OMX/src/inference/analyticVI.jl:49 [inlined]
[3] ntuple(::AugmentedGaussianProcesses.var"#76#77"{Float64,Array{Int64,1},Descent}, ::Int64) at ./ntuple.jl:18
[4] AnalyticVI{Float64,1}(::Float64, ::Bool, ::Array{Int64,1}, ::Array{Int64,1}, ::Array{Int64,1}, ::Int64, ::Descent) at /home/myuser/.julia/packages/AugmentedGaussianProcesses/93OMX/src/inference/analyticVI.jl:49
[5] tuple_inference(::AnalyticVI{Float64,1}, ::Int64, ::Array{Int64,1}, ::Array{Int64,1}, ::Array{Int64,1}) at /home/myuser/.julia/packages/AugmentedGaussianProcesses/93OMX/src/inference/analyticVI.jl:106
[6] MOVGP(::Array{Float64,2}, ::Array{Array{Float64,1},1}, ::SqExponentialKernel, ::GaussianLikelihood{Float64,Nothing,Array{Float64,1}}, ::AnalyticVI{Float64,1}, ::Int64; verbose::Int64, optimiser::ADAM, atfrequency::Int64, mean::ZeroMean{Float64}, variance::Float64, Aoptimiser::ADAM, ArrayType::UnionAll) at /home/myuser/.julia/packages/AugmentedGaussianProcesses/93OMX/src/models/MOVGP.jl:147
[7] MOVGP(::Array{Float64,2}, ::Array{Array{Float64,1},1}, ::SqExponentialKernel, ::GaussianLikelihood{Float64,Nothing,Array{Float64,1}}, ::AnalyticVI{Float64,1}, ::Int64) at /home/myuser/.julia/packages/AugmentedGaussianProcesses/93OMX/src/models/MOVGP.jl:76
[8] top-level scope at In[9]:4
I managed to train a multi-input single-output with no issues. Consider the fake data:
i simply used this model
Now imagine that I want to a multi-output setting, such that my data is now
How should I proceed? There aren't any examples for this case in the docs.