首页 > TensorFlow
阅读:1,414
去燥自编码器(TensorFlow)实现详解
前两节中探讨的两个自编码器属于欠完备自动编码机,因为隐藏层的维度比输入(输出)层低。去噪自编码器属于过完备自编码器,隐藏层的维数大于输入层时效果会更好。
去噪自编码器从受损(噪声)输入中学习,它向编码器网络提供有噪声的输入,然后将解码器的重构图像与原始输入进行比较,这就会“教会”网络去学习如何对输入去噪。不再只是进行像素比较,为了去噪,它也会学习相邻像素的信息。
去噪自编码器从受损(噪声)输入中学习,它向编码器网络提供有噪声的输入,然后将解码器的重构图像与原始输入进行比较,这就会“教会”网络去学习如何对输入去噪。不再只是进行像素比较,为了去噪,它也会学习相邻像素的信息。
准备工作
去噪自编码器也具有 KL 散度惩罚项,它不同于稀疏自编码器的主要有两个方面,首先,隐藏层的单元数 n_hidden 大于输入层的单元数 m,即 n_hidden>m;其次,编码器的输入是受损输入,要做到这一点,这里构造了一个给输入添加噪声的受损函数:具体做法
-
导入必要的模块,导入 TensorFlow 和 numpy 处理输入数据,导入 matplotlib 绘图,等等:
-
加载来自 TensorFlow 示例的数据。本章所有示例都使用了标准的 MNIST 数据库,这样不同自动编码机之间就有了对比的基准:
-
定义类 DenoisingAutoEncoder,与前面的 SparseAutoEncoder 类相似。在这里,定义一个受噪声影响的图像的占位符,将这个噪声图像送入编码器;重构误差是原始清晰图像和解码器输出之间的差异,这里保留了稀疏惩罚项,因此,fit 函数参数包括原始图像和噪声图像:
-
也可以为自动编码机对象添加噪声...将使用类中定义的受损方法:self._X_noisy=self.corrupt(self._X)*0.3+self._X*(1-0.3),此时 fit 函数修改如下:
-
使用前面定义的受损函数来生成一个噪声图像,并提供给会话:
-
随着网络的学习,重构损失在减少:
效果图如下:
-
当将来自测试数据集中的噪声图像提供给训练好的网络时,可进行图像重构:
所有教程
- socket
- Python基础教程
- C#教程
- MySQL函数
- MySQL
- C语言入门
- C语言专题
- C语言编译器
- C语言编程实例
- GCC编译器
- 数据结构
- C语言项目案例
- C++教程
- OpenCV
- Qt教程
- Unity 3D教程
- UE4
- STL
- Redis
- Android教程
- JavaScript
- PHP
- Mybatis
- Spring Cloud
- Maven
- vi命令
- Spring Boot
- Spring MVC
- Hibernate
- Linux
- Linux命令
- Shell脚本
- Java教程
- 设计模式
- Spring
- Servlet
- Struts2
- Java Swing
- JSP教程
- CSS教程
- TensorFlow
- 区块链
- Go语言教程
- Docker
- 编程笔记
- 资源下载
- 关于我们
- 汇编语言
- 大数据
- 云计算
- VIP视频