-
Notifications
You must be signed in to change notification settings - Fork 36
Add datatype for multi-output GP input #138
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add datatype for multi-output GP input #138
Conversation
It would probably be a good idea to also add a single multi-output GP kernel to this PR. Would be good to have this functionality used for something before we merge it. |
Any preference on which kernel to start-off with? |
It would probably make sense to do something really trivial, like a kernel that assumes each output is independent. So maybe you just have a kernel that wraps a single output kernel and a number that represents the number of outputs? I can't imagine why you would want this in practice, but it would probably give us what we need for this PR and would be really easy to test against single-output GPs. |
@willtebbutt Could you take look at For each pair of I haven't added Edit: |
That would be great to always have an indicator that one is using a multi-output kernel. For example having all multi-output kernels written as prefix+MOKernel, because IndependentKernel is a very confusing name. |
I wouldn't personally be in favour of that -- certainly they have their own peculiarities, but they're fundamentally kernels like any other. Indeed, part of my reason for wanting them to conform to the same API as regular kernels is to make them feel less like something complicated and separate from other kernels. I agree that all of the multi-output stuff should probably be kept in its own folder within this package though. |
@willtebbutt Could you clarify what you mean by this? Wouldn't multi-output kernels accept a different type(vector of tuples) of inputs from regular kernels(vector of reals)? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks like good progress. Just a few questions.
Yes, that's correct. My point was more on the output side that it's not the case that our multi-output kernels will produce kernel matrix whose side-length is larger than the length of the input vector -- which is not what you get if you go down the matrix-valued kernel route. My point is that they only differ in the domain of the input -- the rest of the concepts are the same: you provide an |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is looking great. Just a couple of things.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm happy with this now. Thanks for the great works as always @sharanry
Currently we are using |
Also, the build seems to fail for some inexact error outside the test.
Seems to be a problem with AD tests which I haven't touched in this PR. |
Given the error messages I think it's due to JuliaDiff/FiniteDifferences.jl#99 |
Ok main issue is that
by
|
Good catch btw @theogf . You're correct that this was introduced in the most recent PR. I think |
@sharanry any idea where the drop in coverage is coming from? |
Few Base functions like |
Related Issue: AbstractGPs#9
Related old PR: AbstractGPs#28
This PR proposes a data type for inputs for a multi-output GP.
A class of multi-output kernels which we hope to add to this repository will handle this datatype.