自编码器的介绍请参考 这里
准备
导入所需要的包。
import numpy as np
import sklearn.preprocessing as pre
import tensorflow as tf
from tensorflow.example.tutorials.mnist import input_data
定义函数
参数初始化方法 xavier initialization
这里是初始化参数的方法,不是初始化参数!
为什么要参数初始化?
如果神经网络的权重初始化太小,那么我们的输入在经过每层计算后,逐渐缩小而难以产生作用,如果权重初始化太大,则计算后将逐渐增大并导致发散和失效。
不适合的权重似的隐含层的输入方差过大,经过 sigmoid
激活函数时离中心较远,导数接近于零,从而导致提督弥散。
* xavier权重初始化 *
xavier权重初始化可以减少梯度弥散,使输入可以传递的更深。
xavier根据某一层网络的输入、输出节点数量自动调整最合适的分布,让权重满足0均值,同时方差为 2nin+nout 2 n i n + n o u t ,分布可以使用均匀分布或者高斯分布。
下面我们创建一个 ⟮−6nin