注意:代码源自[1][2]
# 这里以最具代表性的去噪自编码器为例。 # 导入MNIST数据集 import numpy as np import sklearn.preprocessing as prep import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data # 这里使用一种参数初始化方法xavier initialization,需要对此做好定义工作。 # Xaiver初始化器的作用就是让权重大小正好合适。 # 这里实现的是标准均匀分布的Xaiver初始化器。 def xavier_init(fan_in, fan_out, constant=1): """ 目的是合理初始化权重。 参数: fan_in --行数; fan_out -- 列数; constant --常数权重,条件初始化范围的倍数。 return 初始化后的权重tensor. """ 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 AdditiveGaussianNoiseAutoencoder(object): """ __init__() :构建函数; n_input : 输入变量数; n_hidden : 隐含层节点数; transfer_function: 隐含层激活函数,默认是softplus; optimizer : 优化器,默认是Adam; scale : 高斯噪声系数,默认是0.1; """ def __init__(self, n_input, n_hidden, transfer_function=tf.nn.softplus, optimizer=tf.train.AdamOptimizer(),