eriklindernoren / Keras-GAN

Keras implementations of Generative Adversarial Networks.
MIT License
9.18k stars 3.14k forks source link

a question about gcgan network #3

Closed 0AlvinLO0 closed 7 years ago

0AlvinLO0 commented 7 years ago

hello,Erik, thanks for your sharing of these kinds of GAN, and I wonder if my data is 3 channel color images like cifar, how to apply it, for if I just change the size and channel it arise an error 'number of input channels does not match corresponding dimension of filter, 1 != 3'

eriklindernoren commented 7 years ago

Hi, thanks! I'm assuming you're referring to DCGAN? If so hopefully all you need to do is change: model.add(Conv2D(1, kernel_size=3, padding="same")) to model.add(Conv2D(self.channels, kernel_size=3, padding="same")) on line 67.

0AlvinLO0 commented 7 years ago

oh yeah dcgan, yes the network works, thanks a lot for your help~~

flyfj commented 6 years ago

the input dimension for cifar (32) is different from mnist (28), how can it be changed to generate that size?

eriklindernoren commented 6 years ago

Change self.img_rows = 28 self.img_cols = 28 self.channels = 1 to self.img_rows = 32 self.img_rows = 32 self.channels = 3 and also make the changes I suggested in my answer above.

flyfj commented 6 years ago

thanks for the reply. i think i also need to modify 'model.add(Dense(128 8 8))' to make the generator produce 32x32 image, otherwise it produces 28x28. is that expected?

eriklindernoren commented 6 years ago

Yeah, that is correct. Change these lines: model.add(Dense(128 * 7 * 7, activation="relu", input_shape=noise_shape)) model.add(Reshape((7, 7, 128))) to model.add(Dense(128 * 8 * 8, activation="relu", input_shape=noise_shape)) model.add(Reshape((8, 8, 128)))

flyfj commented 6 years ago

is there a formula to calculate the layer dimension given an arbitrary input image size? what reference/paper do you use to implement the network?

eriklindernoren commented 6 years ago

A suggestion I often see is to start with a shallow network, get something that works and then expand on that. There is no recipe when it comes to building the network's architecture that guarantees good results though, and it's extra tricky when it comes to GANs. For this example I build the network based of the architecture in the paper and some experimentation. I can recommend this page: https://github.com/soumith/ganhacks (from one of the authors of DCGAN).

flyfj commented 6 years ago

thanks for the guide, very helpful. agree on starting with shallow ones that could fit the data first. excellent work on the implementation!