基acgan的mnist小作业
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
GAN 实现 MNIST 手写数字识别
大多数示例使用手写数字的MNIST数据集[1]。该数据集包含60,000个用 于训练的示例和10,000个用于测试的示例。这些数字已经过尺寸标准化 并位于图像中心,图像是固定大小(28x28像素),其值为0到1。为简单起 见,每个图像都被平展并转换为784(28 * 2eras是一个高层神经网络API,Keras由纯Python编写而成并基Tensorflow、 Theano以及CNTK后端。所以在安装keras的前面,要先搭建tensorflow环境 和安装
KERAS
Anaconda指的是一个开源的Python发行版本,其包含了conda、Python 等180多个科学包及其依赖项。 因为包含了大量的科学包,Anaconda 的 下载文件比较大(约 531 MB),如果只需要某些包,或者需要节省带宽 或存储空间,也可以使用Miniconda这个较小的发行版(仅包含conda和 Python)。
ANACONDA
生成式对抗网络(GAN, Generative Adversarial Networks )是一种 深度学习模型,是近年来复杂分布上无监督学习最具前景的方法之一。 模型通过框架中(至少)两个模块:生成模型(Generative Model) 和判别模型(Discriminative Model)的互相博弈学习产生相当好的输 出。原始 GAN 理论中,并不要求 G 和 D 都是神经网络,只需要是能拟 合相应生成和判别的函数即可。但实用中一般均使用深度神经网络作为 G 和 D 。一个优秀的GAN应用需要有良好的训练方法,否则可能由于 神经网络模型的自由性而导致输出不理想。
GAN
CGAN通过在生成器和判别器中均使用标签信息 进行训练,不仅能产生特定标签的数据,还能够 提高生成数据的质量;SGAN(Semi-Supervised GAN)通过使判别器/分类器重建标签信息来提高 生成数据的质量。既然这两种思路都可以提高生 成数据的质量,于是ACGAN综合了以上两种思路, 既使用标签信息进行训练,同时也重建标签信息, 结合CGAN和SGAN的优点,从而进一步提升生 成样本的质量,并且还能根据指定的标签相应的 样本。
ACGAN
生成器的输入包含C_vector和 Noise_data两个部分,其中C_vector 为训练数据标签信息的One-hot编码张 量,其形状为:(batch_size, num_class) ;Noise_data的形状为: (batch_size, latent_dim)。然后将
两者进行拼接,拼接完成后,得到的输 入张量为:(batch_size, num_class + latent_dim)。生成器的的输出张量 为:(batch_size, channel, Height, Width)。 判别器的输入为: (batch_size, channel, Height, Width); 判别的器的输出为两部分,
一部分是源数据真假的判断,形状为: (batch_size, 1),一部分是输入数据 的分类结果,形状为:(batch_size, class_num)。因此判别器的最后一层
有两个并列的全连接层,分别得到这两
部分的输出结果,即判别器的输出有两
个张量(真假判断张量和分类结果张 量)。
大多数示例使用手写数字的MNIST数据集[1]。该数据集包含60,000个用 于训练的示例和10,000个用于测试的示例。这些数字已经过尺寸标准化 并位于图像中心,图像是固定大小(28x28像素),其值为0到1。为简单起 见,每个图像都被平展并转换为784(28 * 2eras是一个高层神经网络API,Keras由纯Python编写而成并基Tensorflow、 Theano以及CNTK后端。所以在安装keras的前面,要先搭建tensorflow环境 和安装
KERAS
Anaconda指的是一个开源的Python发行版本,其包含了conda、Python 等180多个科学包及其依赖项。 因为包含了大量的科学包,Anaconda 的 下载文件比较大(约 531 MB),如果只需要某些包,或者需要节省带宽 或存储空间,也可以使用Miniconda这个较小的发行版(仅包含conda和 Python)。
ANACONDA
生成式对抗网络(GAN, Generative Adversarial Networks )是一种 深度学习模型,是近年来复杂分布上无监督学习最具前景的方法之一。 模型通过框架中(至少)两个模块:生成模型(Generative Model) 和判别模型(Discriminative Model)的互相博弈学习产生相当好的输 出。原始 GAN 理论中,并不要求 G 和 D 都是神经网络,只需要是能拟 合相应生成和判别的函数即可。但实用中一般均使用深度神经网络作为 G 和 D 。一个优秀的GAN应用需要有良好的训练方法,否则可能由于 神经网络模型的自由性而导致输出不理想。
GAN
CGAN通过在生成器和判别器中均使用标签信息 进行训练,不仅能产生特定标签的数据,还能够 提高生成数据的质量;SGAN(Semi-Supervised GAN)通过使判别器/分类器重建标签信息来提高 生成数据的质量。既然这两种思路都可以提高生 成数据的质量,于是ACGAN综合了以上两种思路, 既使用标签信息进行训练,同时也重建标签信息, 结合CGAN和SGAN的优点,从而进一步提升生 成样本的质量,并且还能根据指定的标签相应的 样本。
ACGAN
生成器的输入包含C_vector和 Noise_data两个部分,其中C_vector 为训练数据标签信息的One-hot编码张 量,其形状为:(batch_size, num_class) ;Noise_data的形状为: (batch_size, latent_dim)。然后将
两者进行拼接,拼接完成后,得到的输 入张量为:(batch_size, num_class + latent_dim)。生成器的的输出张量 为:(batch_size, channel, Height, Width)。 判别器的输入为: (batch_size, channel, Height, Width); 判别的器的输出为两部分,
一部分是源数据真假的判断,形状为: (batch_size, 1),一部分是输入数据 的分类结果,形状为:(batch_size, class_num)。因此判别器的最后一层
有两个并列的全连接层,分别得到这两
部分的输出结果,即判别器的输出有两
个张量(真假判断张量和分类结果张 量)。