当前位置:   article > 正文

GAN生成手写数字Mnist_gan手写数字

gan手写数字

1.1 生成器的搭建

​ 这里我们要搭建的是一个能够接收我们产生的随机初始化的向量,然后产生图片(这里我们产生的数据是mnist的手写体数字)的模型,这里我为了简单化全部采用全连接层来写模型
在这里插入图片描述
可以看到经过全连接层的这样处理,我们输出的会是一个形状大小为(28,28,1)的图片,那么生成器的任务就是判断输入图片是否是生成的,也就是输入图片,输出0,1一个非常简单的二分类问题,那么我们就按照这个思路搭建我们的判别器网络。

1.2 判别器模型的搭建

判别器这里我也使用最基础的全连接层来创建(一方面是减少计算量,一方面是测试一下Dense层的效果)
在这里插入图片描述
那么定义完组成模型的两个重要架构之后,我们为了接下来的训练需要准备处理好的数据,所以这里我们开始处理数据。

2.数据预处理

在本篇最简单的实战中,我采用深度学习中使用次数最多,入门级Hello World数据集,mnist手写体数据集,由数万张手写体数字组成
在这里插入图片描述
这里的数字都是手写之后,经过特殊处理最终保存下来的。可以看到这样生成的图片是非常带有个人风格的(这写的也不太整齐。。),那么利用GAN生成网络去生成能类似人写的数据,达到可以欺骗人眼的效果,就是我此次的目的,那么废话少说,就开始我们此次的数据准备。
在这里插入图片描述
扩展完维度后,为了方便模型运算,我们需要将数据进行归一化,规定数据集的BATCH_SIZE
在这里插入图片描述

3.定义训练各项参数以及训练步骤

在搭建完模型,预处理好数据之后,接下来就需要定义模型所需优化器,损失计算函数,以及训练步骤
在这里插入图片描述
定义完了在训练吗中需要用到的优化器损失函数,我们这里接下来定义模型,训练步骤并开始训练(这里我们会在每次训练后绘画随机生成的图片,来观察我们图像生成模型的效果,所以这里我会提前制作一个随机种子)
在这里插入图片描述

4.训练以及效果可视化评估

那么我们开始训练
在这里插入图片描述
那么由于我的随机数种子是固定的,所以这里我们随机生成的图片每次都是固定的数字,所以我们是可以看到效果在不断变好,如下

在这里插入图片描述
这是第一次训练结束后生成的一团浆糊
在这里插入图片描述
这是第五次训练产生的图像,可以看到已经渐渐产生了有数字的轮廓。

在这里插入图片述
在经过100次训练后最终我们看到我们的图像生成器,最后产生的图片已经非常有手写数字的轮廓。

5.总结

效果仍然不是很好,但其实是由于我这里完全使用了全连接层,在图像处理领域使用卷积神经网络会更好的效果,下图是我使用了卷积神经网络后的效果:
在这里插入图片描述
结语
在本篇博客中,我完成了一个非常简单的GAN生成对抗网络,并训练该模型使得他可以生成非常接近的手写体的真实数据,对本篇博客有疑问或者建议的同学欢迎评论区交流。

最后,放上原文链接:
https://blog.csdn.net/theworld666/article/details/114041729

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/102984
推荐阅读
相关标签
  

闽ICP备14008679号