简介
自编码器(AutoEncoder)是深度学习中的一类无监督学习模型,由encoder和decoder两部分组成
encoder将原始表示编码成隐层表示
decoder将隐层表示解码成原始表示
训练目标为最小化重构误差
隐层特征维度一般低于原始特征维度,降维的同时学习更稠密更有意义的表示
自编码器主要是一种思想,encoder和decoder可以由全连接层、CNN或RNN等模型实现
以下使用Keras,用CNN实现自编码器,通过学习从加噪图片到原始图片的映射,完成图像去噪任务
准备
用到的数据是MNIST,手写数字识别数据集,Keras中自带
训练集5W条,测试集1W条,都是28*28的灰度图
这里我们用IPython写代码,因为有些地方需要交互地进行展示
在项目路径运行以下命令,启动IPython
jupyter notebook
加载库
# -*- coding: utf-8 -*-
from keras.datasets import mnist
import numpy as np
加载MNIST数据,不需要对应的标签,将像素值归一化到0至1,重塑为N*1*28*28的四维tensor,即张量,1表示颜色通道,即