从无到有跑通第一个自编码程序
大家好,这节课,我们给大家介绍一下怎样跑通第一个自编码神经网络程序。
一、准备工作
这里我们需要做好几个准备工作:
1.运行环境:Anaconda 3, Spyder 3.3.6, Python 3.7
2.安装软件包有:tensorflow,keras。
二、网络结构
现在我们就要构建一个最简单的自编码网络,我们使用全连接神经网络来构建自编码学习结构。
网络结构很简单,就是一层全连接编码层,一层全连接解码层,其它复杂的结构先不涉及。
三、自编码程序详解
接下来就进入实战了,我们分步来讲解程序。
1.构建自编码网络结构。
首先是导入keras模块和layers模块,供后面程序使用。
接下来就是定义了一个全连接的自编码网络结构。
其中输入为784维的1维数据。
编码层的参数是输出大小32维,激活函数为relu。解码层为输出大小784,激活函数为sigmoid。
然后把输入input_img和训练输出decoded输入到模型。
最后我们配置模型,使用二进制交叉熵作为损失函数,使用Adam作为优化器。
2.使用Mnist作为数据集。
现在我们来准备输入数据集。我们使用Mnist的数据集。
首先导入mnist数据集。
然后我们将所有值规范化0到1之间的范围,并将28x28图像展平成大小为784的向量。
3.训练模型
现在我们就来训练自动编码器。其中的参数包括训练50个周期,批大小为256,训练时打乱数据集。
4.检验效果
在训练了50个周期后,自动编码器基本上达到了一个稳定的状态。我们可以尝试可视化重构的输入和编码的表示。我们将使用Matplotlib。
首先,我们使用predict函数来检验模型处理测试集的效果
然后,我们使用matplot来画出了原始图像和我们模型处理图像的效果,
最后结果是这样的:
从整体看效果还是不错的。通过这么简单一个网络结构,处理的效果与原图相比基本符合。
下面我们再来给大家跑一遍程序。
好了,今天的课程就到这里。下一节,我们将给大家讲解更复杂的深度学习网络结构。
如果喜欢请点赞,或关注我交流。