使用去躁自编码提取MNIST特征

本文介绍了自编码器及其变种降噪自编码器在非监督学习中的作用,特别是在图像识别中的应用。降噪自编码器通过训练加噪数据,学习到能恢复原始信号的特征表示。文中还提供了代码示例和输出结果,展示在MNIST数据集上,如何使用去噪自编码器进行特征提取。
摘要由CSDN通过智能技术生成

0、引言
在非监督学习中,最典型的一类神经网络莫过于autoencoder(自编码器),它的目的是基于输入的unlabeled数据X={x(1),x(2),x(3),…}X={x(1),x(2),x(3),…},通过训练得到数据的一个降维特征表达H={h(1),h(2),h(3),…}H={h(1),h(2),h(3),…}。以图像识别为例,隐层HH会提取出图像的边角,将这种更为抽象的特征作为后续的多层感知网络的输入,可以更好地表达输入图像,在图像分类等任务上获得更好的性能。
  从最原始的自编码器衍生出很多不同的种类:
   - 降噪自编码器,接受加噪的输入来进行训练
   - 稀疏自编码器,对隐层的激活输出进行正则,同一时间只有部分隐层神经元是活跃的
   - 栈式自编码器,级联多个自编码器,逐层提取抽象特征
1、去躁自编码器
和自编码器不同的是,降噪自编码的训练过程中,输入的数据有一部分是“损坏”的,DAE(Denoising Autoencoder)的核心思想是,一个能够从中恢复出原始信号的神经网络表达未必是最好的,能够对“损坏”的原始数据编码、解码,然后还能恢复真正的原始数据,这样的特征才是好的。在论文“Stacked Denoising Autoencoders: Learning Useful Representations in a Deep Network with a Local Denoising Criterion”中,阐述了DAE的原理,如下图所示:
在这里插入图片描述
2、代码示例:

# -*- coding: utf-8 -*-
"""
Created on Sun May 27 17:49:18 2018
# -*- coding: utf-8 -*-
"""
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt

from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets('MNIST_data', one_hot=True)

print(type(mnist))  # <class 'tensorflow.contrib.learn.python.learn.datasets.base.Datasets'>

print('Training data shape:', mnist.t
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值