第十一章 自动编码器

article/2025/10/7 1:55:54

简介:自动编码器是一种可以进行无监督学习的神经网络模型。一般而言,一个完整的自动编码器主要由两部分组成,分别是用于核心特征提取的编码部分和可以实现数据重构的解码部分。
1.自动编码器入门
在自动编码器中负责编码的部分也叫做编码器(Encoder),而负责解码的部分也叫作解码器(Decoder)。编码器主要负责对原始的输入数据进行压缩并提取数据中的核心特征,而解码器主要是对在编码器中提取的核心特征进行展开并重新构造出之前的输入数据。
在这里插入图片描述
如图就是一个简化的自动编码器模型,它的主要结构是神经网络,该模型的最左边是用于数据输入的输入层,在输入数据通过神经网络的层层传递之后得到了中间输入数据的核心特征,这就完成了在自编码器中输入数据的编码过程。
然后,将输入数据的核心特征再传递到一个逆向的神经网络中,核心特征会被解压并重构,最后得到了一个和输入数据相近的输出数据,这就是自动编码器中的解码过程。
输入数据通过自动编码器模型的处理后又被重新还原了。
自动编码器模型的最大用途就是实现输入数据的清洗,比如去除输入数据中的噪声数据、对输入数据的某些关键特征进行增强和放大,等等。
2.PyTorch之自动编码实战
本节的自动编码器模型解决的是一个去除图片马赛克的问题。要训练出这个模型,首先需要生成一部分有马赛克的图片。我们知道图片是由像素点构成的,而像素点其实就是一个个的数字,我们使用的MNIST数据集中的手写图片的像素点数字的范围是0-1,所以处理马赛克的一种简单方式就是对原始图片中的像素点进行扰乱,我们在这里通过对输入的原始图片加上一个维度相同的随机数字来达到了处理马赛克的目的。
下面就可以搭建自动编码模型了,搭建自动编码模型最常用的两种方式分别是使用线性变换来构建模型中的神经网络和使用卷积变换来构建模型中的神经网络。
(1)通过线性变换实现自动编码器模型
线性变换方式仅使用线性映射和激活函数作为神经网络结构的主要组成部分。
代码中的self.encoder对应的是自动编码器中的编码部分,在这个过程中实现了输入数据的数据量从224个到128个再到64个最后到32个的压缩过程,这32个数据就是我们提取到的核心特征。
self.decoder对应的是自动编码器中的解码部分,这个过程实现了从32个到64个再到224个的逆向解压过程。
然后对定义好的模型进行训练;
因为这里我们需要衡量图片在去码之后和原始图片之间的误差,所以选择均方误差这类损失函数作为度量。
总体的训练流程是我们首先获取一个批次的图片,然后对这个批次的图片进行打码处理并裁剪到指定的像素值范围内,因为之前说过,在MNIST数据集使用的图片中每个像素点的数字值在0-1之间。在得到了经过打码处理的图片后,将其输入搭建好的自动编码器模型中,经过模型处理后输出一个预测图片,用这个预测图片和原始图片进行损失值计算,通过这个损失值对模型进行后向传播,最后就能得到去除图片马赛克效果的模型了。
(2)通过卷积变换实现自动编码器模型
卷积变换的方式仅使用卷积层、最大池化层、上采样层和激活函数作为神经网络结构的主要组成部分。
上采样层:即torch.nn.Upsample类,这个类的作用就是对我们提取到的核心特征进行解压,实现图片的重写构建,传递给它的参数一共又两个,分别是scale_factor和mode:前者用于确定解压的倍数;后者用于定义图片重构的模式,可以选择的模式有:nearset(最邻近法)、linear(线性插值法)、bilinear(双线性插值法)和trilinear(三线性插值法)。
然后对定义好的模型进行训练;
最后,我们通过使用一部分测试数据集中的图片来验证我们的模型能否正常工作。
结果显示:首先,在结果的可视性上没有问题;其次,去码效果更好,还原出来的图片内容更清晰。


http://chatgpt.dhexx.cn/article/QTumecVN.shtml

相关文章

Python 题库自动化面试题

1、自动化代码中,用到了哪些设计模式? 单例设计模式 工厂模式 PO设计模式 数据驱动模式 面向接口编程设计模式 2、什么是断言( Assert) ? 断言 Assert 用于在代码中验证实际结果是不是符合预期结果, 如果测试用例执行失败会抛出异常并提供断言日志 3、什么…

Python实现对视频自动打码

我们在观看视频的时候,有时候会出现一些奇怪的马赛克,影响我们的观影体验,那么这些马赛克是如何精确的加上去的呢? 本次我们就来用Python实现对视频自动打码! 准备工作 环境咱们还是使用 Python3.8 和 pycharm2021 即…

Python——超级鹰打码平台实现selenium对b站的自动化登陆

目录 一 、Chrome(谷歌)驱动器的下载 (一)驱动器版本选择 (二)下载Chrome驱动器 二、需要安装的库 (一)安装命令 (二)指定selenium版本原因 三、实现步…

selenium 自动化测试

Selenium 是一个用于Web应用程序测试的工具,支持多平台、多浏览器、多语言去实现自动化测试。目前在Web自动化领域应用越来越广泛。 selenium 介绍 Selenium的特点如下: 开源、免费多浏览器支持:Firefox、Chrome、IE、Opera、Edge多平台支…

深度学习中的自动编码器:TensorFlow示例

什么是自动编码器? 自动编码器是重建输入的绝佳工具。简单来说,机器就是一个图像,可以生成一个密切相关的图片。这种神经网络中的输入是未标记的,这意味着网络能够在没有监督的情况下进行学习。更准确地说,输入由网络编码,仅关注最关键的特征。这是自动编码器因降维而流行…

博客论坛自动采集器 - 蓝天采集器源码

介绍: 博客论坛自动采集器 做一个自动采集文章的网站,在你网站根目录创建一个目录随便我这边是caiji,然后把采集器的源码上传到caiji里面去。 安装:你的域名/caiji访问配置好数据库什么的安装就行。数据前缀不要和原来博客的相同。 安装完成…

Pytorch基础-07-自动编码器

自动编码器(AutoEncoder)是一种可以进行无监督学习的神经网络模型。一般而言,一个完整的自动编码器主要由两部分组成,分别是用于核心特征提取的编码部分和可以实现数据重构的解码部分。 1 自动编码器入门 在自动编码器中负责编码…

python手工打码_python云打码

广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 为什么需要了解打码平台的使用现在很多网站都会使用验证码来进行反爬,所以为了能够更好的获取…

python你实现视频自动打码,了解妨碍你观看精彩的马赛克是怎么精准形成的

前言 嗨喽!大家好呀,这里是魔王呐~ 我们在观看视频的时候,总有一些精准得马赛克挡住我们想看得地方,严重影响我们的观影体验!! 那么这些马赛克是如何精确的加上去的呢? 本次我们就来用Python…

易语言php验证码识别,易语言自动打码验证码服务端带案例

易语言通用验证码识别服务端,用来做接口还是可以的! 将127.0.0.1改成自己的服务器IP,或者域名 php案例: $rel = file_get_contents(http://www.zhuangjiba.com/d/file/help/2018/08/cfdefaddb3f47d78f8c66a7de28720aa.png); $code = _upload($rel); echo 验证码:.$code; f…

自动打码神器是什么

自动打码神器是什么 提到自动打码神器,可能很多网友会想到答题吧自动打码平台、远程答题器等,除了这一些软件之外,还有不少我们都不知道的软件正在等待大家的发掘。今天,小编就给大家先介绍一款专门批量识别验证码的平台——答题吧…

如何用 ISO 镜像制作 U 盘安装盘(通用方法、无需 WinPE)

文章目录 ★扫盲若干【基本概念】★啥是【通用】制作方法?★为啥选择这几款工具?★rufus 的玩法(Windows 平台)★UNetbootin 的玩法(跨平台)★dd 的玩法(跨平台)★优缺点对比★读者…

利用UltraISO刻录光盘启动盘

1 介绍 虽说现在越来越倾向于使用U盘作为启动盘,但本文还是要讲一讲怎样使用UltraISO制作光盘启动盘—作为系统安装的一种方法。我不知道未来光盘会不会消失,但本文确实能起到保护历史文化遗产的作用。但我希望不要消失,就好像大家都在说纸质…

如何在Mac上。ISO映像文件刻录到DVD

ISO是普通的CD或DVD光盘映像格式基于ISO-9660标准。从原始光盘ISO映像文件包含一个精确复制的数据。它包括光盘上的文件系统的信息,如目录结构,文件属性和引导代码,以及保存的数据。如果你想知道如何创建。ISO映像,并在Mac上玩ISO…

如何使用UltraISO将光盘中的内容提取为ISO镜像

转载地址:https://newsupport.lenovo.com.cn/commonProblemsDetail.html?noteid148183 知识点分析:将光盘中的内容转换为ISO镜像以便保存到电脑中的方法。 操作步骤: 1、鼠标右击桌面上的UltraISO快捷方式图标,选择“以管理员身份运行”; …

如何刻录光盘

如何刻录光盘 1 、将光盘放入光驱,选择“用于CD/DVD播放机” ,该模式下,刻录在光盘的文件无法进行编辑和删除 2 、将需要刻录的文件拷贝至光盘内,则会在“准备好写入光盘中的文件”下显示拷贝进去的文件,此时文件还没…

如何刻录光盘文件

常识补充刻录机简介光盘刻录机是一种数据写入设备,利用激光将数据写到空光盘上从而实现数据的储存。其写入过程可以看做普通光驱读取光盘的逆过程。基本原理刻入数据时,利用高功率的激光束反射到盘片,使盘片上发生变化,模拟出二进…

balenaEtcher v1.18.1 开源跨平台镜像文件快速刻录工具

balenaEtcher 是一款开源免费的跨平台镜像文件快速刻录工具,使用体验感觉比软碟通UltraISO好用多了,推荐使用。它可以帮助用户快速将 ISO 文件、IMG 文件或者其他格式的镜像文件刻录到 USB 驱动器、SD 卡或者其他可烧录介质上。它支持 Windows、macOS 和…

使用Linux建立镜像文件与刻录光盘(mkisofs,cdrecord,wodim,isoinfo,rsync)

一、镜像文件(.iso)与光盘(CD/DVD)的关系 镜像文件用于存储文件与数据光盘是一种存储设备,需要将镜像文件进行刻录,将数据刻录到光盘光盘刻录的步骤: 第一步:使用mkisofs命令将数据创建成为一个镜像文件(iso)第二步:使…

使用最新版UltraISO将ISO镜像刻录到U盘

1. 使用最新版UltraISO将ISO镜像刻录到U盘 一定要是最新版,试用版都可以,按下图操作: 2. U盘启动电脑进入安装界面 正常情况下你应该会看到下面的这个界面: 选择第一项,然后按TAB键,然后会看到下面这个&a…