-
Notifications
You must be signed in to change notification settings - Fork 281
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
Would it be possible to do a non-negative partial Tucker factorization? #498
Comments
Hi @MelanieN, |
Thanks @cohenjer. I think @MelanieN refers to the partial_tucker in which case we don't have any projection matrix at all along some of the modes. We could use a full Tucker along with a |
@JeanKossaifi I see, sorry I misunderstood the issue. I don't ever use partial Tucker :) We could definitively implement a partial nonnegative Tucker. I am working on nonnegative Tucker these days, so I might first add a skip_mode option at first; if I find the time I will also do the nonnegative_partial_tucker. |
Awesome! As a side note, going the other way may be easier: tucker is just which is a more efficient way to compute the expression using the Kronecker and U_k = Id for the skipped modes: |
Hi, thanks for the reply! It is indeed as @JeanKossaifi mentions, but I am not so familiar with tensor theory, just applying it. I look forward to any updates on this topic! |
Also I just remembered, but we do have a skip-mode option in So to solve your issue, although this is not ideal performance-wise, you can do the following: import tensorly as tl
from tensorly.decomposition import non_negative_tucker_hals
data = tl.abs(tl.randn([5,5,5]))
tucker_init = tl.tucker_tensor.TuckerTensor((tl.abs(tl.randn([5,3,3])),[tl.eye(5),tl.abs(tl.randn([5,3])), tl.abs(tl.randn([5,3]))]))
out = non_negative_tucker_hals(data, [5,3,3], init=tucker_init, fixed_modes=[0]) |
Thank you, I'll give this a try! |
@MelanieN did this work for you? |
Is your feature request related to a problem? Please describe.
I have non-negative data and only want to decompose wrt one mode.
Describe the solution you'd like
A combined algorithm on nn Tucker and partial Tucker
Describe alternatives you've considered
Trying to combine them myself
The text was updated successfully, but these errors were encountered: