Alyssalai's picture
Upload CVAE trained on cleaned_100_final tactics
14a57da verified
Raw
History Blame Contribute Delete
1.29 kB
import torch
import torch.nn as nn
class ConditionalVAE(nn.Module):
def __init__(self, x_dim, c_dim, latent_dim):
super(ConditionalVAE, self).__init__()
self.encoder_fc = nn.Sequential(
nn.Linear(x_dim + c_dim, 256),
nn.ReLU(),
nn.Linear(256, 128),
nn.ReLU()
)
self.fc_mu = nn.Linear(128, latent_dim)
self.fc_logvar = nn.Linear(128, latent_dim)
self.decoder_fc = nn.Sequential(
nn.Linear(latent_dim + c_dim, 128),
nn.ReLU(),
nn.Linear(128, 256),
nn.ReLU(),
nn.Linear(256, x_dim)
)
def encode(self, x, c):
inputs = torch.cat([x, c], dim=1)
h = self.encoder_fc(inputs)
return self.fc_mu(h), self.fc_logvar(h)
def reparameterize(self, mu, logvar):
std = torch.exp(0.5 * logvar)
eps = torch.randn_like(std)
return mu + eps * std
def decode(self, z, c):
inputs = torch.cat([z, c], dim=1)
return self.decoder_fc(inputs)
def forward(self, x, c):
mu, logvar = self.encode(x, c)
z = self.reparameterize(mu, logvar)
x_recon = self.decode(z, c)
return x_recon, mu, logvar