I am training one autoencoder for two classes : real and fake. I have a latent space of 256 dimensions. I just wish to activate first 128 dimensions for the real class and last 128 for fake ones.
My forward function looks something like below. How can this be done.
def forward(self, x):
"""
pass input through the encoder and reconstruct with decoder
:param x: original input
:return: x_recon : reconstructed input, z : latent representation
"""
unpool_info = []
for m in self.encoder:
if isinstance(m, nn.MaxPool2d):
output_size = x.size()
x, pool_idx = m(x)
unpool_info.append({'output_size': output_size,
'indices': pool_idx})
else:
x = m(x)
z = x
for m in self.decoder:
if isinstance(m, nn.MaxUnpool2d):
x = m(x, **unpool_info.pop())
else:
x = m(x)
x_recon = x
return z, x_recon