What are the wanted inputs and outputs? When training with unlabeled data is it called twice? It is not totally clear from the code. Thanks.