程序代码:
https://download.csdn.net/download/do_it_123/88935602
我们尝试着利用数据本身作为监督信号来指导网络的训练,即希望神经网络能够学习到映射:。我们把网络切分为两个部分,前面的子网络尝试学习映射关系:
后面的子网络尝试学习映射关系:
,我们把
成一个数据编码(Encode)的过程,把高维度的输入编码成低维度的隐变量(Latent Variable,或隐藏变量),称为 Encoder 网络(编码器);
看成数据解码(Decode)的过程,把编码过后的输入z解码为高维度的x, 称为 Decoder 网络(解码器)。
自编码器能够将输入变换到隐藏向量,并通过解码器重建(Reconstruct,或恢复)出。我们希望解码器的输出能够完美地或者近似恢复出原来的输入,即,那么,自编码器的优化目标可以写成:
Fashion MNIST数据集
Fashion MNIST 是一个定位在比 MNIST 图片识别问题稍复杂的数据集,它的设定与MNIST 几乎完全一样,包含了 10 类不同类型的衣服、鞋子、包等灰度图片,图片大小为28 × 28,共 70000 张图片,其中 60000 张用于训练集, 10000 张用于测试集,每行是一种类别图片。可以看到, Fashion MNIST 除了图片内容与 MNIST 不一样,其它设定都相同,大部分情况可以直接替换掉原来基于 MNIST 训练的算法代码,而不需要额外修改。由于 Fashion MNIST 图片识别相对于 MNIST 图片更难,因此可以用于测试稍复杂的算法性能。
编码器
我们利用编码器将输入图片降维到较低维度的隐藏向量:
,并基于隐藏向量h利用解码器重建图片,自编码器模型如图所示,编码器由3层全连接层网络组成,输出节点数分别为 256、 128、 20,解码器同样由 3 层全连接网络组成,输出节点数分别为 128、 256、 784。
解码器
再来创建解码器子网络, 这里基于隐藏向量 h_dim 依次升维到 128、 256、 784 长度,除最后一层,激活函数使用 ReLU 函数。解码器的输出为 784 长度的向量,代表了打平后的28 × 28大小图片,通过 Reshape 操作即可恢复为图片矩阵。
网络训练
自编码器的训练过程与分类器的基本一致,通过误差函数计算出重建向量与原始输入向量x之间的距离,再利用 TensorFlow 的自动求导机制同时求出 encoder 和 decoder 的梯度,循环更新即可。
图片重建
为了测试图片重建效果,我们把数据集切分为训练集与测试集,其中测试集不参与训练。我们从测试集中随机采样测试图片,经过自编码器计算得到重建后的图片,然后将真实图片与重建图片保存为图片阵列,并可视化,方便比对。
备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除。
创作不易,相关程序,说明文档需求,如需要,可加作者新联系方式,WX:Q3101759565,QQ:3101759565[多加几次!!!]
祝您学业有成!工作顺利! 年薪百万!