This is original github source:
https://github.com/otepencelik/GAN-Artwork-Generation
I want to rerun this model and use it another area (CGAN).
I want to change the network to generate multiple label and increase the performance but it didn't work well. I need somebody to help me! Thanks~ Error information as follow. I think the problem is reshape problem but I don't know how to figure it out! Need some help
```
Input attribute #Number of all images (81474)!!!
# Root directory for dataset
dataroot = "***"
# Number of workers for dataloader
workers = 2
# Batch size during training
batch_size = 64
# Spatial size of training images. All images will be resized to this
# size using a transformer.
image_size = 64
#number of calsses lable
n_class = 27
# Number of channels in the training images. For color images this is 3
nc = 3
# Size of z latent vector (i.e. size of generator input)
nz = 100
# Size of feature maps in generator (output)
ngf = 64
# Size of feature maps in discriminator
ndf = 64
# Number of training epochs
num_epochs = 5
# Learning rate for optimizers
lr = 0.0002
# Beta1 hyperparam for Adam optimizers
beta1 = 0.5
# Number of GPUs available. Use 0 for CPU mode.
ngpu = 1 ```
```def __init__(self, ngpu=1):
super(Generator, self).__init__()
self.label_emb = nn.Embedding(n_class, n_class)
self.ngpu = ngpu
self.main = nn.Sequential(
# input is Z, going into a convolution
nn.ConvTranspose2d( nz + n_class, ngf * 16, 4, 1, 0, bias=False),
nn.BatchNorm2d(ngf * 16),
nn.ReLU(True),
# state size. (ngf*8) x 4 x 4
nn.ConvTranspose2d(ngf * 16, ngf * 8, 4, 2, 1, bias=False),
nn.BatchNorm2d(ngf * 8),
nn.ReLU(True),
# state size. (ngf*4) x 8 x 8
nn.ConvTranspose2d( ngf * 8, ngf * 4, 4, 2, 1, bias=False),
nn.BatchNorm2d(ngf * 4),
nn.ReLU(True),
# state size. (ngf*2) x 16 x 16
nn.ConvTranspose2d( ngf * 4, ngf, 4, 4, 1, bias=False),
nn.BatchNorm2d(ngf),
nn.ReLU(True),
# state size. (ngf) x 32 x 32
nn.ConvTranspose2d(ngf, nc, 4, 2, 1, bias=False),
nn.Tanh()
# state size. (nc) x 64 x 64
)
def forward(self, noise_input, labels):
# Concatenate label embedding and image to produce input
#print(self.label_emb(labels).unsqueeze(2).unsqueeze(3).shape, noise_input.shape, labels.shape)
gen_input = torch.cat((self.label_emb(labels).unsqueeze(2).unsqueeze(3), noise_input), 1)
img = self.main(gen_input)
img = img.view(img.size(0), *(nc, image_size, image_size))
return img
netG = Generator(ngpu).to(device)```
<ipython-input-65-50e58bbfe414> in <module>
37 noise = torch.randn(b_size, nz, 1, 1, device=device)
38 # Generate fake image batch with G
---> 39 fake = netG(noise, fake_style_labels)
40 label.fill_(fake_label)
41 # Classify all fake batch with D
~/opt/anaconda3/lib/python3.8/site-packages/torch/nn/modules/module.py in _call_impl(self, *input, **kwargs)
1100 if not (self._backward_hooks or self._forward_hooks or self._forward_pre_hooks or _global_backward_hooks
1101 or _global_forward_hooks or _global_forward_pre_hooks):
-> 1102 return forward_call(*input, **kwargs)
1103 # Do not call functions when jit is used
1104 full_backward_hooks, non_full_backward_hooks = [], []
<ipython-input-61-cb81d45887cf> in forward(self, noise_input, labels)
31 gen_input = torch.cat((self.label_emb(labels).unsqueeze(2).unsqueeze(3), noise_input), 1)
32 img = self.main(gen_input)
---> 33 img = img.view(img.size(0), *(nc, image_size, image_size))
34 return img
35
RuntimeError: shape '[64, 3, 64, 64]' is invalid for input of size 2952192```