实例:构建infoGAN生成MNIST模拟数据
本例演示在MNISTt数据集上使用infoGan网络模型生成模拟数据,并且加入标签信息的loss函数同时实现了AC-GAN的网络。其中的D和G都是用卷积网络来实现的,相当于DCGAN上面的infoGAN例子。
案例描述
通过使用InfoGAN网络学习MNIST数据特征,生成以假乱真的MNIST模拟样本,并发现内部潜在特征信息。
具体实现可以分为如下几个步骤:
1. 引入头文件并加载MNIST数据
假设MNIST数据放在本地磁盘跟目录的data下。本例中将使用前面介绍的slim模块构建网络结构,所以需要引入slim。当然也可以不用slim,引入slim的目的就是为了编写代码比较方便,不用考虑输入维度即相关权重的定义。最主要是slim还对反卷积有封装,下文会用到。
建立2个噪声数据(一般噪声和隐含信息)与label结合放到生成器中,生成模拟样本,然后将模拟样本和真实样本分别输入到判别器中,生成判别结果,重构造的隐含信息,还有样本标签。
在优化时,让判别器对真实的判别结果为1,对模拟数据的判别结果为0来做loss。对生成器让判别结果为1来做loss。
3.定义生成器与判别器
由于是先从模拟噪声数据来恢复样本,所以在生成器中。要使用反卷积函数。这里通过2个全连接,再接入两个反卷积完成样本的模拟生成的。并且每一层都有BN归一化处理。
本例演示在MNISTt数据集上使用infoGan网络模型生成模拟数据,并且加入标签信息的loss函数同时实现了AC-GAN的网络。其中的D和G都是用卷积网络来实现的,相当于DCGAN上面的infoGAN例子。
案例描述
通过使用InfoGAN网络学习MNIST数据特征,生成以假乱真的MNIST模拟样本,并发现内部潜在特征信息。
具体实现可以分为如下几个步骤:
1. 引入头文件并加载MNIST数据
假设MNIST数据放在本地磁盘跟目录的data下。本例中将使用前面介绍的slim模块构建网络结构,所以需要引入slim。当然也可以不用slim,引入slim的目的就是为了编写代码比较方便,不用考虑输入维度即相关权重的定义。最主要是slim还对反卷积有封装,下文会用到。
代码12-1 Mnistinfogan
建立2个噪声数据(一般噪声和隐含信息)与label结合放到生成器中,生成模拟样本,然后将模拟样本和真实样本分别输入到判别器中,生成判别结果,重构造的隐含信息,还有样本标签。
在优化时,让判别器对真实的判别结果为1,对模拟数据的判别结果为0来做loss。对生成器让判别结果为1来做loss。
3.定义生成器与判别器
由于是先从模拟噪声数据来恢复样本,所以在生成器中。要使用反卷积函数。这里通过2个全连接,再接入两个反卷积完成样本的模拟生成的。并且每一层都有BN归一化处理。
代码12-1 Mnistinfogan(续)
<