vislearn/FrEIA

What if I know my contional inputs?

Closed this issue · 1 comments

I have two functions y = f(x_1, x_2, x_3, z) and z = g(x_1, x_2, x_3, y), where I know that for any given x_1, x_2 and x_2, that y is diffeomorphic with z (i.e., the transformation between y and z is invertible, given a set x_1, x_2, x_3). I want to use neural networks to represent these functions, and exploit the fact I know that y and z have this diffeomorphic relationship using Invertible blocks. I was thinking that x_1, x_2, and x_3 are similar to the conditional latent space, however, my dataset consists of N points with (x_1, x_2, x_3, y, z). Thus, I don't need to model the latent space with a gaussian prior, as I already have points (with physical meaning). Does it make sense to use x_1, x_2, and x_3 as conditional inputs, or maybe pass them through a FC network and then in as a conditional variable, and then have z and y to be the input and outputs to n invertible block, and then treat the problem as a more supervised learning problem? I realize I can just learn these two functions as separate networks (which I have done), but I want to try and leverage the intertible relationship between y and z.

My problem formulation is similar to the Inverse Kinematics problem given in your "Analyzing Inverse Problems with
Invertible Neural Networks" paper, but assuming we have the joint angles and cartesian points already (if they had the same dimension).

I think that for your problem the best approach would be to treat it as a supervised problem as you suggest. However, you will need INNs which have 1-dimension inputs and outputs. Unfortunately, these are not currently implemented in FrEIA. You might be able to use the NLSQ flow from this repo: https://github.com/harvardnlp/TextFlow