def __init__(self, latent_code_num, hidden):
    super(VAE_MLP_CAT, self).__init__()
    self.encoder = nn.Sequential(nn.Conv2d(1, 32, kernel_size=4, stride=2, padding=1), nn.BatchNorm2d(32), nn.LeakyReLU(0.2, inplace=True), nn.Conv2d(32, 64, kernel_size=4, stride=1, padding=1), nn.BatchNorm2d(64), nn.LeakyReLU(0.2, inplace=True), nn.Conv2d(64, 128, kernel_size=5, stride=3, padding=1), nn.BatchNorm2d(128), nn.LeakyReLU(0.2, inplace=True))
    self.fc11 = nn.Linear((((128 * 10) * 5) * 2), latent_code_num)
    self.fc12 = nn.Linear((((128 * 10) * 5) * 2), latent_code_num)
    self.mlp = nn.Sequential(torch.nn.Linear((latent_code_num + 1), hidden), torch.nn.Tanh(), torch.nn.Linear(hidden, 1))
    for p in self.mlp.parameters():
        torch.nn.init.normal_(p, mean=0, std=0.1)
    torch.nn.init.constant_(self.mlp[0].bias, val=0.0)
    torch.nn.init.constant_(self.mlp[2].bias, val=0.0)
    self.fc2 = nn.Linear(latent_code_num, (((128 * 10) * 5) * 2))
    self.decoder = nn.Sequential(nn.ConvTranspose2d(128, 64, kernel_size=4, stride=2, padding=1), nn.ReLU(inplace=True), nn.ConvTranspose2d(64, 32, kernel_size=4, stride=1, padding=1), nn.ReLU(inplace=True), nn.ConvTranspose2d(32, 1, kernel_size=6, stride=3, padding=1), nn.Sigmoid())
def __init__(self, latent_code_num, hidden):
    super(VAE_MLP_CAT, self).__init__()
    self.encoder = nn.Sequential(nn.Conv2d(1, 32, kernel_size=4, stride=2, padding=1), nn.BatchNorm2d(32), nn.LeakyReLU(0.2, inplace=True), nn.Conv2d(32, 64, kernel_size=4, stride=1, padding=1), nn.BatchNorm2d(64), nn.LeakyReLU(0.2, inplace=True), nn.Conv2d(64, 128, kernel_size=5, stride=3, padding=1), nn.BatchNorm2d(128), nn.LeakyReLU(0.2, inplace=True))
    self.fc11 = nn.Linear((((128 * 10) * 5) * 2), latent_code_num)
    self.fc12 = nn.Linear((((128 * 10) * 5) * 2), latent_code_num)
    self.mlp = nn.Sequential(torch.nn.Linear((latent_code_num + 1), hidden), torch.nn.Tanh(), torch.nn.Linear(hidden, 1))
    for p in self.mlp.parameters():
        torch.nn.init.normal_(p, mean=0, std=0.1)
    torch.nn.init.constant_(self.mlp[0].bias, val=0.0)
    torch.nn.init.constant_(self.mlp[2].bias, val=0.0)
    self.fc2 = nn.Linear(latent_code_num, (((128 * 10) * 5) * 2))
    self.decoder = nn.Sequential(nn.ConvTranspose2d(128, 64, kernel_size=4, stride=2, padding=1), nn.ReLU(inplace=True), nn.ConvTranspose2d(64, 32, kernel_size=4, stride=1, padding=1), nn.ReLU(inplace=True), nn.ConvTranspose2d(32, 1, kernel_size=6, stride=3, padding=1), nn.Sigmoid())