当前位置: 首页 > 网络应用技术

技术+案例详细说明无监督的学习自动编码器

时间:2023-03-07 11:03:58 网络应用技术

  首先,什么是自动编码器?自我编码是神经网络的一种形式。请注意,这是一个无监督的学习算法。例如,现在有一张图片,您需要对其进行编码,然后还原图片过程,如下图所示:

  图片被压缩然后解压缩。当减少压缩时原始图片的质量降低时,当信息量较小但包含所有关键文件时,使用的信息量用于恢复原始图片。您为什么这样做?有时神经网络需要输入大量信息。例如,在分析较高的定义图片时,输入卷将为数千万。从数千万的神经网络进行研究是一项非常困难的工作。目前,有必要进行压缩或功能,压缩输入信息量,然后将压缩信息放入神经网络中。以这种方式学习变得容易,因此由于此编码起着作用。

  如下图所示,原始数据白色X将其压缩到黑色X中,然后比较两个X以找到错误,然后反向传输以逐渐提高自我编码的准确性。

  训练自编码是原始数据的本质。从头到尾,我们仅使用输入变量X,并且不使用与输入变量相对应的标签。

  但是,当使用自我编码时,它通常只使用上半部分,称为编码器,可以获得原始数据的本质。神经网络,但也取得了良好的结果。

  下图是通过编码编制的数据。它可以总结每种类型数据的特征。如果将这些数据放置在两个维图上,则每个数据可以通过其本质很好地区分。编码可以提取类似于PCA(主要组件分析)的数据功能,也可以用于减少维度。其降低效果甚至超过PCA。

  自动编码器算法属于非Supervision学习。这是一个压缩数据特性的过程,然后对压缩特征进行解压缩,这类似于PCA降低和压缩。

  本文的代码包括两个部分:

  监督学习和无监督学习之间存在差异(1)必须有一个培训集和测试样本以进行监督和学习。将规则置于培训集中,并将本法律用于测试样本。和学习。只有一组数据,在该组的数据集中寻找规则。(2)监督学习的方法是识别事物,并且标识结果被体现为将标签添加到标识数据中。训练样本集必须由带有标签的样本组成。指标监督学习方法,只有要分析的数据集本身,没有提前标签。自然聚集,但没有为上述数字提供前类别标签。

  让我们开始编写代码!

  第一步是打开Anaconda,然后选择已构建的“ TensorFlow”环境,然后运行Spyder。

  第二步是引入扩展包。

  第三步是下载数据集。

  由于MNIST数据集是一个TensorFlow示例数据,因此我们只需要以下代码来实现数据集的读取。如果数据集不存在,它将在线下载。如果数据集已下载,则将直接调用。

  第四步是定义参数。

  MNIST图片是28*28的像素,其N_Input输入功能为784。功能不断压缩,首先压缩至256,然后通过隐藏层压缩到128。最终,比较了784解压缩和原始的784功能,并且根据成本提高了自动编码器的准确性。

  第五步是编写核心代码,即定义编码器和解码器函数以实现压缩和减压操作。

  编码器是两层的层,分别压缩到256个元素和128个元素。编码器还包括两层的层,相当于256和784个元素。

  应该注意的是,在MNIST数据集中,XS数据的最大值为1,最小值为0,而不是图片的最大值,因为它已在此处由Sigmoid函数本机。

  batch_xs,batch_ys = mnist.train.next_batch(batch_size)#max(x)= 1,min(x)= 0

  步骤6,定义错误计算方法。

  其中,y_pred表示预测的结果,调用解码器解压缩函数,而解码器_OP继续调用解码器解压缩,而编码器压缩功能以处理图像数据集x。

  步骤7,定义培训和视觉代码,此部分是神经网络操作的核心代码。

  首先,初始化操作,然后在5组实验中进行培训。batch_x是获得的图片数据集。它通过sess.run([优化器,成本],feed_dict = {x:batch_xs})计算真实图像和预测图像的误差。

  步骤8,调用Matplotlib库图,可视化原始图像和预测图像。

  步骤9,运行代码并分析结果。

  如下图所示,错误正在不断减少,表明我们的无监督神经网络学习了知识。

  通过5批训练,结果如下图所示。以上是真实的原始图像,以下是压缩后被解压缩的图像数据。注意,实际上,在5批批次中训练很少,而更多的培训需要正常情况。

  完整代码:

  实验的第一部分已经完成,并比较了10张原始图像和预测图像。然后,我们在第二部分共享实验并生成聚类图。

  第一步是修改参数。

  修改如下,学习效率设置为0.001,培训批次设置为20。

  第二步是增加编码器和解码器的数量并修改参数。

  我们将隐藏层设置为4层,并且这种效果将更好。首先压缩从784到128,然后是64、10,最后压缩到只有两个元素(功能),从而在两个维度上显示。同时,重量值和偏见值已更新。编码器和解码器设置为4层。

  第三步是修改压缩和减压定义功能,这也增加到四层。

  第四步,最终修改了训练代码,我们不再观看其训练结果,而是在减压之前观察结果。

  完整的代码如下:

  该训练过程需要一点时间,并且操作结果如下图所示:

  如下图所示,群集显示结果分为一堆不同的颜色,与不同的数字相对应。例如,左下角的数据集不受监督以学习群集成数0,而另一侧为其他数据。

  但是需要改进其聚类结果,因为这只是自动编码器的一个简单示例。我希望本文可以帮助博客作者理解和理解无监督的学习和自动编码器算法。下面的作者将分享一个更好的情况。

  参考:

  [1] Yang Xiuzhang,Yan na。Python网络数据爬行和分析从进入到熟练程度(分析)[M]。北京:北京:北京:北京航空大学出版社,2018年。

  [2]“ Mo恼火的上帝” Netease云视频地址

  [3] https://study.163.com/course/courselearn.htm?courseid=1003209007

  [4] https://github.com/siucaan/cnn_mnist

  [5] https://github.com/eastmountyxz/ai-tensorflow

  [6]“机器学习” Zhou Zhihua

  [7]深度学习(07)RNN循环神经网络-02-TensorFlow实现

  [8] https://github.com/lawlite19/deeplearning_python

  本文分享了华为云社区的诚意,作者:Eastmount。