(tensorflow)mnist数据集上的应用(二)

本文介绍了如何使用TensorFlow构建去噪自编码器,通过限制中间层节点数量实现数据降维,并利用加性高斯噪声增强模型学习能力。Xavier初始化器用于权重初始化,训练过程中涉及随机抽取数据块并进行标准化处理。最后,文章展示了模型的性能测试。
摘要由CSDN通过智能技术生成

特征是可以不断转化为高一级的特征,加入有很多标注的数据,则可以训练一个深层的神经网络。
如果没有标注的数据,可以使用无监督的自编码器来提取特征。
自编码器,即可以使用自身的高阶特征编码自己。输入和输出也是一致的,借助稀疏编码的思想,目标是使用稀疏的一些高阶特征重新组合来重构自己。
特点是:第一,希望输入/输出保持一致;
第二,希望使用少量字数的高阶特征来重构自己,而不只是复制像素点。

1>限制中间隐含层节点的数量,让中间隐含层节点的数量小于输入/输出节点的数量,相当于降维的过程;
2>如果给数据加入噪声,就是Denoising AutoEncoder(去噪自编码器),将从噪声中学习出数据的特征。

去噪自编码器中最常用的噪声是加性高斯噪声(Additive Gaussian Noise,AGN)

#实现自编码器
import numpy as np
import sklearn.preprocessing as prep
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data

Xavier初始化器让权重被初始化得不大不小,正好合适。tf.random_uniform创建一个均匀分布的数据范围。

#定义参数初始化方法xavier initialization
def xavier_init(fan_in, fan_out, constant = 1):
    low = -constant * np.sqrt(6.0 / (fan_in + fan_out))
    high = constant * np.sqrt(6.0 / (fan_in + fan_out))
    return tf.random_uniform((fan_in, fan_out),
                             minval=low,
                             maxval=high,
                             dtype=tf.float32)

定义去噪自编码的class,包含一个构建函数init()和其他常用函数。

#定义去噪自编码的class
class AdditiveGaussianNoiseAutoencoder(object):
    def __init__(self,
                 n_input,
                 n_hidden,
                 transfer_function=tf.nn.softplus,
                 optimizer=tf.train.AdamOptimizer(),
                 scale=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值