I am new to cGAN architectures and I was trying out on the MNIST which worked out quite fine but not my own data set. The data set has 7 classes and an Input size of each image (64, 64, 3). I am using Pytorch with Python 3.10:
class GeneratorModel(nn.Module):
def __init__(self):
super(GeneratorModel, self).__init__()
input_dim = 100 +7
output_dim = 12288
self.label_embedding = nn.Embedding(7, 7)
self.hidden_layer1 = nn.Sequential(
nn.Linear(input_dim, 256),
nn.LeakyReLU(0.2)
)
...
self.hidden_layer4 = nn.Sequential(
nn.Linear(1024, output_dim),
nn.Tanh()
)
def forward(self, x, labels):
c = self.label_embedding(labels)
x = torch.cat([x, c], 1)
output = self.hidden_layer1(x)
output = self.hidden_layer2(output)
output = self.hidden_layer3(output)
output = self.hidden_layer4(output)
return output.to(device)
class DiscriminatorModel(nn.Module):
def __init__(self):
super(DiscriminatorModel, self).__init__()
input_dim = 12288 + 7
output_dim = 1
self.label_embedding = nn.Embedding(7, 7)
self.hidden_layer1 = nn.Sequential(
nn.Linear(input_dim, 1024),
nn.LeakyReLU(0.2),
nn.Dropout(0.3)
)
...
self.hidden_layer4 = nn.Sequential(
nn.Linear(256, output_dim),
nn.Sigmoid()
)
def forward(self, x, labels):
c = self.label_embedding(labels)
x = torch.cat([x, c], 1)
output = self.hidden_layer1(x)
output = self.hidden_layer2(output)
output = self.hidden_layer3(output)
output = self.hidden_layer4(output)
return output.to(device)
This is the Error:
RuntimeError: The size of tensor a (100) must match the size of tensor b (7) at non-singleton dimension 0