python网络编程实例,python网络攻击代码
实验4:生成对抗网络
个人数据生成对抗网络由Goodfellow等人在2014年提出,可以替代VAE学习图像的潜在空间。几乎不可能从统计上区分生成的图像和实际图像,并且它可以生成相当真实的合成图像。
GAN由两部分组成。
生成器:输入随机向量(势空间中的随机点),解码成合成图像。
鉴别器网络(Discriminator network):使用图像作为输入来预测图像是从训练集还是从生成器网络生成的。
GAN的大致结构如上图所示,MNIST图像用作数据。潜在样本是生成器用来创建虚假图像的随机向量。经过训练和学习后,生成器将找出如何将这些随机向量映射到可识别分类器的可识别图像。
相关库文件的导入
鉴别器网络加载mnist数据集
数据集被重建为灰度,但是由于卷积层的原因,通道大小被加到1。
构建分类器网络我们构建了一个分类器网络,接收了[1,28,28]个图像向量,用了一些卷积层,密集层,大量的过滤和二次元softmax输出层代码来判断是真是假。
网络结构如下图所示。
生成器方法使用functional API在keras中创建一个相对简单的生成模型,接受100个随机输入,最后将它们映射到[1,28,28]像素,以匹配MNIST数据的形状。
首先,生成一组密集的1414值,并执行一系列具有不同大小和数量的通道的过滤器。最后,利用Adam优化器训练二维交叉熵。(由于实际使用的只是发电机模型的方向,所以不会直接在该模型中进行训练。)。
在输出层上使用sigmiod可以使像素饱和到0或1的状态,而不是中间灰度。此外,采用批量标准化还可以加快训练速度,保证各层的广泛激活。
建立一个网络
网络结构如下
对抗模型原理的生成方法有两种:生成模型和对抗模型。将它们结合起来可以很容易地在Keras上构建GAN。通过函数式API,您可以轻松地重用相同的实例化网络对象,并轻松地保持与之前编译的模型相同的共享权重。
建立模型以将分类器权重设置为不可追踪。
堆栈生成器
堆叠分类器
训练模型定义了绘图函数。首先,定义一个函数来绘制和存储生成器的输出,该生成器可以自己接收和生成噪声向量。
参数设置
我们被预先训练使用未训练的生成模型生成少量随机图像,并将其连接到相同数量的数字实际图像。通过对它们进行适当的标记和拟合,直到达到相对稳定的损失值(1),有超过20,000个判别模型。
通过描绘训练和变化的图像来总结前景,我们现在已经有了随机初始化的生成器、训练的分类器和可以用两个网络的堆叠模型来训练的GAN。
为了在多个时间段中运行该过程并获得训练中的GAN损耗图,可以绘制GAN损耗和电阻损耗函数随时间的变化图。
对抗实验
对抗过程的一些数据如下
制作实验数据
课程总结
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。