“ 再小的你,也有自己的个性”
通过阅读本文,您能学到:
1、利用自动编码器进行重构手写体图像。
源代码
https://github.com/PrivateThink/tensorflow_tutorial/blob/master/16.py
自动编码器是一种数据压缩算法,一个普通的自动编码器包括编码器和解码器,编码器负责压缩数据,解码器负责解压数据,其中,压缩过程是从数据样本中学习的,解压数据过程是将学到知识重新利用。
自动编码器有如下特点:
与数据相关的。比如利用猫的图片训练的自动编码器来压缩狗的图片,效果会很差,只能压缩猫的图片。
自动编码器是有损的。自动编码器会学习主要特征,丢弃一些不重要的特征,这样解码器的输出与编码器的输入不一样的,解码器的输出是有损失的。
自动编码器是从数据样本中自动学习的。学习数据的主要特征,丢弃无关紧要的特征。
更多理论知识可以查看:
https://blog.csdn.net/marsjhao/article/details/73480859
下面利用Tensorflow搭建自动编码器进行压缩手写体图片。
上述程序加载了手写体数据以及设置了参数。
这里只有一个输入占位符,因为自动编码器在本教程的作用是将手写体的图片压缩然后进行重构,所以输入为手写体图片。
编码器和解码器都都创建了两层隐藏层,编码器的输入与解码器的输出是相反的,如encoder_h1的[input_num,hidden_1]和decoder_h2的[hidden_1,input_num]是相反的。
解码层的输出就是重构的图片了。另外,这里是衡量原始图片和重构图片的差别,所以损失函数用平方差损失。构建好自动编码器以后,进行训练,训练过程如下:
接下来将重构的数据集和原始数据集进行对比。
这里选取16张测试集进行测试,然后将16张测试的原始图片与重构的图片进行显示比较。具体的效果可以参照公开的源代码。
领取专属 10元无门槛券
私享最新 技术干货