Tensorflow实战2:Tensorflow实现去噪自编码器

算法实现过程的详细介绍

首先介绍一下自编码器,Hinton教授在Science发表了文章Reducing the dimensionality of data with neural networks,讲解使用自编码器进行降维的方法,自编码器就是可以使用自身的高阶特征编码自己。自编码器的输入节点和输出节点是一致的,但如果只是单纯的逐个复制输入节点则没有意义,所以我们可以加入几种限制:
(1)如果限制中间隐藏节点的数量,比如让中间隐含节点的数量小于输入/输出节点的数量,就相当于一个降维的过程。
(2)如果给数据加入噪声,那么就是Denoising AutoEncoder(去噪自编码器),我们将从噪声中学习到数据的特征。
下面就来实现去噪自编码器。

  1. 导入常用库NumPy,还有Scikit-learn中的preprocessing模块,这是一个对数据进行预处理的常用模块,之后我们会用到其中的数据标准化功能,同时,这个算法依然在mnist数据集上实验,所以导入Tensorflow中MNIST数据的加载模块。
import numpy as np
import sklearn.preprocessing as prep
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
  1. 我们的自编码器会用到xavier initialization,需要先定义好它。Xavier初始化器在Caffe的早期版本中被频繁使用,它的特点是会根据某一层网络的输入,输出节点自动调整最合适的分布。Xavier从数学角度分析,就是让权重满足0均值,同时方差为2nin+nout\frac{2}{n_{in}+n_{out}}nin+nout2,分布可以用高斯或者均匀分布,我们通过tf.random_uniform创建了一个(−6nin+nout,6nin+nout)(-\sqrt\frac{6}{n_{in}+n_{out}}, \sqrt\frac{6}{n_{in}+n_{out}})(nin+nout
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值