GAN初步学习——前置知识,生成器判别器的搭建,GAN实现手写数字识别,GAN其他类别

目录

 

1、前置知识

2、原理简介

3、实例引入——手写数字图像生成

生成器代码

判别器代码

辅助函数

3、GAN的其他类别

CGAN——指定类的输出

DCGAN——不变GAN原理下提出了一些有助于增强稳定性的tricks

ACGAN——判断真假+判断类别

infoGAN

LAPGAN

EBGAN


 

1、前置知识

GAN初步学习——前置知识,生成器判别器的搭建,GAN实现手写数字识别,GAN其他类别_第1张图片

GAN初步学习——前置知识,生成器判别器的搭建,GAN实现手写数字识别,GAN其他类别_第2张图片

GAN初步学习——前置知识,生成器判别器的搭建,GAN实现手写数字识别,GAN其他类别_第3张图片

GAN初步学习——前置知识,生成器判别器的搭建,GAN实现手写数字识别,GAN其他类别_第4张图片

GAN初步学习——前置知识,生成器判别器的搭建,GAN实现手写数字识别,GAN其他类别_第5张图片

GAN初步学习——前置知识,生成器判别器的搭建,GAN实现手写数字识别,GAN其他类别_第6张图片

GAN初步学习——前置知识,生成器判别器的搭建,GAN实现手写数字识别,GAN其他类别_第7张图片GAN初步学习——前置知识,生成器判别器的搭建,GAN实现手写数字识别,GAN其他类别_第8张图片

GAN初步学习——前置知识,生成器判别器的搭建,GAN实现手写数字识别,GAN其他类别_第9张图片

 

2、原理简介

GAN初步学习——前置知识,生成器判别器的搭建,GAN实现手写数字识别,GAN其他类别_第10张图片

GAN初步学习——前置知识,生成器判别器的搭建,GAN实现手写数字识别,GAN其他类别_第11张图片

GAN初步学习——前置知识,生成器判别器的搭建,GAN实现手写数字识别,GAN其他类别_第12张图片

GAN初步学习——前置知识,生成器判别器的搭建,GAN实现手写数字识别,GAN其他类别_第13张图片

阶段一 训练判别器

将真实样本input1和生成器随机生成的样本input2共同送入判别器训练,要求判别器将真实数据判别为真,生成器生成数据判别为假。

阶段二 训练生成器

固定判别器,训练生成器,使其生成的数据能够被判别器识别为真。

伪代码如下:

for 迭代 in (迭代总数):

    for batch in range(batch_size):

        新batch = input1的batch + input2的batch   #此处batch加倍

        for 轮数 in range(判别器总轮数):
            
            阶段一  训练判别器

        阶段二  训练生成器

3、实例引入——手写数字图像生成

生成器代码

noise = np.random.uniform(-1,1,(batch_size,latent_size)  #通过噪音生成图片

def generator_model():
    model.Sequential()

    model.add(Dense(input_dim=100,output_dim=1024))  #全连接层,100维->1024维
    model.add(Activation('relu'))

    model.add(Dense(128*7*7))  #生成图片,128通道的7*7大小
    model.add(BatchNormalizaion())
    model.add(Activation('relu'))

    model.add(Reshape((7,7,128),input_shape=(128*7*7,)))
    model.add(UnSampling2D(size=(2,2)))  #将7*7升高为原来二倍变为14*14

    model.add(Conv2D(64,(5,5),padding='same'))
    model.add(Activation('relu'))

    model.add(UnSampling2D(size=(2,2)))  #变为28*28
    model.add(Conv2D(1,(5,5),padding='same'))

    model.add(Activation('tanh'))

    return model

判别器代码

def discriminator_model():  #本质为二分类问题
    model = Sequential()

    model.add(Conv2D(64,(5,5),padding='same',input_shape=(28,28,1)))
    model.add(Activation('tanh'))
    model.add(MaxPooling2D(pool_size=(2,2)))

    model.add(Conv2D(128,(5,5)))
    model.add(Activation('tanh'))
    model.add(MaxPooling2D(pool_size=(2,2)))

    model.add(Flatten())

    model.add(Dense(1024))
    model.add(Activation('tanh'))

    model.add(Dense(1))
    model.add(Activation('sigmoid'))

    return model

辅助函数

GAN初步学习——前置知识,生成器判别器的搭建,GAN实现手写数字识别,GAN其他类别_第14张图片

固定判别器D调整生成器G

def generator_containing_discriminator(g,d):

    model = Sequential()

    model.add(g)

    d.trainable = False

    model.add(d)

    return model
    

GAN初步学习——前置知识,生成器判别器的搭建,GAN实现手写数字识别,GAN其他类别_第15张图片 

 

3、GAN的其他类别

CGAN——指定类的输出

GAN初步学习——前置知识,生成器判别器的搭建,GAN实现手写数字识别,GAN其他类别_第16张图片

GAN初步学习——前置知识,生成器判别器的搭建,GAN实现手写数字识别,GAN其他类别_第17张图片

 

DCGAN——不变GAN原理下提出了一些有助于增强稳定性的tricks

GAN初步学习——前置知识,生成器判别器的搭建,GAN实现手写数字识别,GAN其他类别_第18张图片

GAN初步学习——前置知识,生成器判别器的搭建,GAN实现手写数字识别,GAN其他类别_第19张图片

 

ACGAN——判断真假+判断类别

GAN初步学习——前置知识,生成器判别器的搭建,GAN实现手写数字识别,GAN其他类别_第20张图片

 

infoGAN

GAN初步学习——前置知识,生成器判别器的搭建,GAN实现手写数字识别,GAN其他类别_第21张图片

 

LAPGAN

GAN初步学习——前置知识,生成器判别器的搭建,GAN实现手写数字识别,GAN其他类别_第22张图片

 

EBGAN

GAN初步学习——前置知识,生成器判别器的搭建,GAN实现手写数字识别,GAN其他类别_第23张图片

 

 

你可能感兴趣的:(深度学习,GAN)