Exemplo n.º 1
0
        public DGAN()
        {
            discriminator      = InputLayer.Create(StartSide, 1);
            discriminator_back = ActivationLayer.Create <Sigmoid>();
            discriminator.Append(
                FCLayer.Create(1, 256).Append(
                    ActivationLayer.Create <LeakyReLU>().Append(
                        FCLayer.Create(1, 1).Append(
                            discriminator_back
                            ))));

            generator      = InputLayer.Create(1, LatentSize);
            generator_back = ActivationLayer.Create <Tanh>();
            generator.Append(
                FCLayer.Create(1, 256).Append(
                    ActivationLayer.Create <LeakyReLU>().Append(
                        DropoutLayer.Create(0.5f).Append(
                            FCLayer.Create(1, 512).Append(
                                ActivationLayer.Create <LeakyReLU>().Append(
                                    DropoutLayer.Create(0.5f).Append(
                                        FCLayer.Create(1, OutputSize).Append(
                                            generator_back
                                            ))))))));

            //Initialize Weights
            discriminator.SetupInternalState();
            discriminator.InitializeWeights(new UniformWeightInitializer(3, 0));

            generator.SetupInternalState();
            generator.InitializeWeights(new UniformWeightInitializer(1, 0));
        }
Exemplo n.º 2
0
        public GAN()
        {
            #region 128x128

            /*discriminator = InputLayer.Create(StartSide, 3);
             * discriminator_back = ActivationLayer.Create<Sigmoid>();
             * discriminator.Append(
             *  ConvLayer.Create(3, 8).Append(              //o = 126
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  ConvLayer.Create(3, 8).Append(              //o = 124
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  ConvLayer.Create(3, 8).Append(              //o = 122
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  ConvLayer.Create(3, 8).Append(              //o = 120
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  pooling_1.Append(                           //o = 60
             *  ConvLayer.Create(3, 8).Append(              //o = 58
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  ConvLayer.Create(3, 8).Append(              //o = 56
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  ConvLayer.Create(3, 8).Append(              //o = 54
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  ConvLayer.Create(3, 8).Append(              //o = 52
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  pooling_2.Append(                           //o = 26
             *  ConvLayer.Create(3, 8).Append(              //o = 24
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  ConvLayer.Create(3, 8).Append(              //o = 22
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  pooling_3.Append(                           //o = 11
             *  ConvLayer.Create(3, 8).Append(              //o = 22
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  FCLayer.Create(1, 1).Append(
             *      discriminator_back
             * )))))))))))))))))))))))))));
             *
             * generator = InputLayer.Create(32, 8);
             * generator_back = ActivationLayer.Create<Tanh>();
             * generator.Append(
             *  ConvLayer.Create(3, 8, 2).Append(              //o = 26
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  ConvLayer.Create(3, 8, 2).Append(              //o = 24
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  ConvLayer.Create(3, 8, 2).Append(              //o = 26
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  ConvLayer.Create(3, 8, 2).Append(              //o = 24
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  ConvLayer.Create(3, 8, 2).Append(              //o = 26
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  ConvLayer.Create(3, 8, 2).Append(              //o = 24
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  ConvLayer.Create(3, 8, 2).Append(              //o = 26
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  ConvLayer.Create(3, 8, 2).Append(              //o = 24
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  ConvLayer.Create(3, 8, 2).Append(              //o = 26
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  ConvLayer.Create(3, 8, 2).Append(              //o = 24
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  ConvLayer.Create(3, 8, 2).Append(              //o = 26
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  ConvLayer.Create(3, 8, 2).Append(              //o = 24
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  ConvLayer.Create(3, 8, 2).Append(              //o = 26
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  ConvLayer.Create(3, 8, 2).Append(              //o = 24
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  ConvLayer.Create(3, 8, 2).Append(              //o = 26
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  ConvLayer.Create(3, 8, 2).Append(              //o = 24
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  ConvLayer.Create(3, 8, 2).Append(              //o = 26
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  ConvLayer.Create(3, 8, 2).Append(              //o = 24
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  ConvLayer.Create(3, 8, 2).Append(              //o = 26
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  ConvLayer.Create(3, 8, 2).Append(              //o = 24
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  ConvLayer.Create(3, 8, 2).Append(              //o = 26
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  ConvLayer.Create(3, 8, 2).Append(              //o = 24
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  ConvLayer.Create(3, 8, 2).Append(              //o = 26
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  ConvLayer.Create(3, 8, 2).Append(              //o = 24
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  ConvLayer.Create(3, 8, 2).Append(              //o = 26
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  ConvLayer.Create(3, 8, 2).Append(              //o = 24
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  ConvLayer.Create(3, 8, 2).Append(              //o = 26
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  ConvLayer.Create(3, 8, 2).Append(              //o = 24
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  ConvLayer.Create(3, 8, 2).Append(              //o = 26
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  ConvLayer.Create(3, 8, 2).Append(              //o = 24
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  ConvLayer.Create(3, 8, 2).Append(              //o = 26
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  ConvLayer.Create(3, 8, 2).Append(              //o = 24
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  ConvLayer.Create(3, 8, 2).Append(              //o = 26
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  ConvLayer.Create(3, 8, 2).Append(              //o = 24
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  ConvLayer.Create(3, 8, 2).Append(              //o = 26
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  ConvLayer.Create(3, 8, 2).Append(              //o = 24
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  ConvLayer.Create(3, 8, 2).Append(              //o = 26
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  ConvLayer.Create(3, 8, 2).Append(              //o = 24
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  ConvLayer.Create(3, 8, 2).Append(              //o = 26
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  ConvLayer.Create(3, 8, 2).Append(              //o = 24
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  ConvLayer.Create(3, 8, 2).Append(              //o = 26
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  ConvLayer.Create(3, 8, 2).Append(              //o = 24
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  ConvLayer.Create(3, 8, 2).Append(              //o = 26
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  ConvLayer.Create(3, 8, 2).Append(              //o = 24
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  ConvLayer.Create(3, 8, 2).Append(              //o = 26
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  ConvLayer.Create(3, 8, 2).Append(              //o = 24
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  ConvLayer.Create(3, 8, 2).Append(              //o = 26
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  ConvLayer.Create(3, 3, 2).Append(              //o = 26
             *      generator_back
             * ))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))));*/
            #endregion

            /*
             * discriminator = InputLayer.Create(StartSide, 3);
             * discriminator_back = ActivationLayer.Create<Sigmoid>();
             * discriminator.Append(
             *  ConvLayer.Create(3, 8).Append(              //o = 30
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  DropoutLayer.Create(0.2f).Append(
             *  FCLayer.Create(1, 512).Append(              //o = 28
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  DropoutLayer.Create(0.2f).Append(
             *  FCLayer.Create(1, 256).Append(              //o = 26
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  DropoutLayer.Create(0.2f).Append(
             *  FCLayer.Create(1, 256).Append(              //o = 24
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  DropoutLayer.Create(0.2f).Append(
             *  FCLayer.Create(1, 128).Append(              //o = 24
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  DropoutLayer.Create(0.2f).Append(
             *  FCLayer.Create(1, 64).Append(              //o = 24
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  DropoutLayer.Create(0.2f).Append(
             *  FCLayer.Create(1, 32).Append(              //o = 24
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  DropoutLayer.Create(0.2f).Append(
             *  FCLayer.Create(1, 1).Append(
             *      discriminator_back
             * )))))))))))))))))))))));
             *
             * generator = InputLayer.Create(1, LatentSize);
             * generator_back = ActivationLayer.Create<Tanh>();
             * generator.Append(
             *  FCLayer.Create(1, 32).Append(              //o = 18
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  DropoutLayer.Create(0.3f).Append(
             *  FCLayer.Create(1, 64).Append(              //o = 18
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  DropoutLayer.Create(0.3f).Append(
             *  FCLayer.Create(1, 128).Append(              //o = 18
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  DropoutLayer.Create(0.3f).Append(
             *  FCLayer.Create(1, 256).Append(              //o = 18
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  DropoutLayer.Create(0.3f).Append(
             *  FCLayer.Create(1, 256).Append(              //o = 18
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  DropoutLayer.Create(0.3f).Append(
             *  FCLayer.Create(1, 512).Append(              //o = 18
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  DropoutLayer.Create(0.3f).Append(
             *  FCLayer.Create(16, 2).Append(              //o = 18
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  ConvLayer.Create(3, 8, 2).Append(              //o = 18
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *  DropoutLayer.Create(0.3f).Append(
             *  FCLayer.Create(EndSide, 3).Append(              //o = 18
             *  ActivationLayer.Create<LeakyReLU>().Append(
             *      generator_back
             * ))))))))))))))))))))))))));*/


            discriminator      = InputLayer.Create(StartSide, 3);
            discriminator_back = ActivationLayer.Create <Sigmoid>();
            discriminator.Append(
                FCLayer.Create(1, 1024).Append(
                    ActivationLayer.Create <LeakyReLU>().Append(
                        DropoutLayer.Create(0.3f).Append(
                            FCLayer.Create(1, 512).Append(
                                ActivationLayer.Create <LeakyReLU>().Append(
                                    DropoutLayer.Create(0.3f).Append(
                                        FCLayer.Create(1, 256).Append(
                                            ActivationLayer.Create <LeakyReLU>().Append(
                                                DropoutLayer.Create(0.3f).Append(
                                                    FCLayer.Create(1, 256).Append(
                                                        ActivationLayer.Create <LeakyReLU>().Append(
                                                            DropoutLayer.Create(0.3f).Append(
                                                                FCLayer.Create(1, 64).Append(
                                                                    ActivationLayer.Create <LeakyReLU>().Append(
                                                                        DropoutLayer.Create(0.3f).Append(
                                                                            FCLayer.Create(1, 64).Append(
                                                                                ActivationLayer.Create <LeakyReLU>().Append(
                                                                                    DropoutLayer.Create(0.3f).Append(
                                                                                        FCLayer.Create(1, 1).Append(
                                                                                            discriminator_back
                                                                                            ))))))))))))))))))));

            generator      = InputLayer.Create(1, LatentSize);
            generator_back = ActivationLayer.Create <Tanh>();
            generator.Append(
                FCLayer.Create(1, 128).Append(
                    ActivationLayer.Create <ReLU>().Append(
                        FCLayer.Create(1, 256).Append(
                            ActivationLayer.Create <ReLU>().Append(
                                FCLayer.Create(1, 256).Append(
                                    ActivationLayer.Create <ReLU>().Append(
                                        DropoutLayer.Create(0.5f).Append(
                                            FCLayer.Create(1, 256).Append(
                                                ActivationLayer.Create <ReLU>().Append(
                                                    FCLayer.Create(1, 512).Append(
                                                        ActivationLayer.Create <ReLU>().Append(
                                                            FCLayer.Create(1, 1024).Append(
                                                                ActivationLayer.Create <ReLU>().Append(
                                                                    FCLayer.Create(32, 3).Append(
                                                                        generator_back
                                                                        )))))))))))))));

            encoder      = InputLayer.Create(32, 3);
            encoder_back = ActivationLayer.Create <LeakyReLU>();
            encoder.Append(
                FCLayer.Create(1, 1024).Append(
                    ActivationLayer.Create <ReLU>().Append(
                        FCLayer.Create(1, 512).Append(
                            ActivationLayer.Create <ReLU>().Append(
                                FCLayer.Create(1, 256).Append(
                                    ActivationLayer.Create <ReLU>().Append(
                                        DropoutLayer.Create(0.5f).Append(
                                            FCLayer.Create(1, 256).Append(
                                                ActivationLayer.Create <ReLU>().Append(
                                                    FCLayer.Create(1, 256).Append(
                                                        ActivationLayer.Create <ReLU>().Append(
                                                            FCLayer.Create(1, 128).Append(
                                                                ActivationLayer.Create <ReLU>().Append(
                                                                    FCLayer.Create(1, LatentSize).Append(
                                                                        encoder_back
                                                                        )))))))))))))));

            //Initialize Weights
            discriminator.SetupInternalState();
            discriminator.InitializeWeights(new UniformWeightInitializer(3, 0));

            generator.SetupInternalState();
            generator.InitializeWeights(new UniformWeightInitializer(1, 0));

            encoder.SetupInternalState();
            encoder.InitializeWeights(new UniformWeightInitializer(2, 0));
        }