网站主要内容包括什么,我想建立个网站数据怎么办,长沙建站宝网络科技有限公司,营销型网站建设优势1. 生成对抗网络GAN简介 1.1 生成器 G(Z)接受随机噪声Z作为输入生成仿品#xff0c;并训练自己去欺骗判别器D#xff0c;让D以为G(Z)产生的任何数据都是真实的。
1.2 判别器 D(Y)可以基于真品和仿品来判断仿造品的仿真程度#xff0c;通常值越靠近0表示越真实(靠近1表示仿造…1. 生成对抗网络GAN简介 1.1 生成器 G(Z)接受随机噪声Z作为输入生成仿品并训练自己去欺骗判别器D让D以为G(Z)产生的任何数据都是真实的。
1.2 判别器 D(Y)可以基于真品和仿品来判断仿造品的仿真程度通常值越靠近0表示越真实(靠近1表示仿造)。其目标是使每个真实数据分布中的图像的D(Y)值最大化并使真实数据分布之外的图像D(Y)值最小化。
1.3 训练原理 生成器和判别器进行一个相对立的博弈因此名为对抗性训练。一般以交替方式训练G和D其目标函数表示为损失函数并用梯度下降算法进行优化。D和G都通过反向传播来调整生成器的参数这样G就能够学习如何在越来越多的情况下欺骗D最后G将学习如何生成可以以假乱真的仿造图片。
2. 实现DCGAN网络
小知识 1LeakyReLU允许单元未激活时有个小的梯度在许多情况下它能提高GAN的性能。 2BatchNormalization() 批归一化通过将每个单元的输入归一化为0均值、单位方差来帮助稳定学习的技术。在许多情况下加快了训练减少了初始化不良的问题并且能更普遍地产生更准确的结果。 2.1 定义生成器G
from keras.models import Sequential
from keras.layers.convolutional import Conv2D, MaxPooling2D
from keras.layers.core import Activation, Flatten, Dense, Dropout
from keras.datasets import cifar10
from keras.utils import np_utils
from keras.optimizers import RMSpropdef generator_model():model Sequential()model.add(Dense(input_dim100, output_dim1024))model.add(Activation(tanh))model.add(Dense(128*7*7))model.add(BatchNormalization())model.add(Activation(tanh))model.add(Reshape((128, 7, 7), input_shape(128*7*7,)))model.add(UpSampling2D(size(2, 2)))model.add(Conv2D(64, 5, 5, border_modesame))model.add(Activation(tanh))model.add(UpSampling2D(size(2, 2)))model.add(Conv2D(1, 5, 5, border_modesame))model.add(Activation(tanh))return model# 注意这里的卷积网络没有任何池化操作
2.2 定义判别器D
def discriminator_model():model Sequential()model.add(Dense(input_dim100, output_dim1024))model.add(Conv2D(64, 5, 5, border_modesame, input_shape(1, 28, 28)))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
2.3 组合
# 一个对抗模型其 G和 D基于相同的模型 M
adversarial_model AdversarialModel(base_modelM,player_params[generator.trainable_weights, discriminator.trainable_weights],player_names[generator, discriminator])
# G和D基于两个不同的模型
adversarial_model AdversarialModel(player_models[gan_g, gan_d],player_params[generator.trainable_weights, discriminator.trainable_weights],player_names[generator, discriminator])