TensorFlow教程:TensorFlow实现自编码器
TensorFlow是一个非常强大的用来做大规模数值计算的库。其所擅长的任务之一就是实现以及训练深度神经网络。 实现自编码器和实现一个单隐含层的神经网络差不多,只不过在数据输入时做了标准化,并加上一个高斯噪声。
在本教程中,我将结合自己的亲身体会,介绍并构建一个TensorFlow自编码器(AutoEncoder)模型的基本步骤,并将通过这些步骤深入理解TensorFlow的工作原理。这个教程假设你已经熟悉自编码器和MNIST数据集。
在开始本教程前,假设你已经成功安装了tensorflow1.3.0(python=3.5),并已获得MNIST数据集(MNIST数据集的官网是Yann LeCun's website)。
在准备工作就绪后,就可以运用TensorFlow进行自编码器的编写工作。下面的代码是通过教程和自己理解整理而成,代码注释是本人加的,如有错误请指正。
# 消除warning(可有可无)
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
# Tensorflow实现自编码器
# 导入Numpy,Scikit-learn的preprocessing模块
# 导入Tensorflow中MNIST数据的加载模块
import numpy as np
import sklearn.preprocessing as prep
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
# 标准均匀分布Xaiver初始化
# fan_in是输入节点的数量,fan_out是输出节点的数量
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),