Hi @cbalioglu
Thank you for looking into this issue:)

training

I am training an invertible network with forward/inverse path and optionally, jointly with other models.
The invertible network has several other functions, too.

function call order

I (usually) call the functions in order but not always:
model1.func1
model1.func2

model2.func1    # sometimes omitted for different purposes

model1.func3    # also called outside the training loop
model1.func4

I am using the intermediate outputs to compute loss functions.
I sometimes call func3 independently from the above flow.

training parts per function

The training weights are partially shared across different functions while some don’t require weights.