目录(注意本文jupyterlab编写)
初始化和激活函数对照表
初始化 | 激活函数 |
---|---|
glorot_uniform,glorot_normal | None,tanh,sigmoid,softmax |
he_uniform,he_normal | relu,ELU,Leaky RELU,PRELU |
lecun_normal | selu |
由SELU激活函数构造的特殊网络
简介:如果构建一个仅由密集层堆叠的神经网络,并且所有隐藏层都使用SELU激活函数,则该网络是自归一化的:每层的输出倾向于在输出过程中保留平均值0和标准差1
从而解决了梯度消失/梯度爆炸的问题。
条件:
- 输入特征必须标准化(平均值为0,标准差为1)
- 每个隐藏层权重初始化必须使用LeCun初始化,即kernel_initializer=‘lecun_normal’,激活函数为SELU
- 如果使用Dropout,应该使用AlphaDropout
应该使用哪个激活函数:
通常激活函数SELU>ELU>leaky ReLU(及其变体)>ReLU>tanh>sigmoid
LeakyReLU激活函数
LeakyReLU:tf.keras.layers.LeakyReLU(alpha=0.2)
alpha:越小,负轴越接近x轴
梯度裁剪
梯度裁剪 在创建优化器时设置clipvalue,clipnorm参数
- clipvalue=1:将所有的偏导数限制在-1.0到1.0之间,可能改变梯度向量的方向
- clipnorm=1:将不改变梯度方向,但是如果向量某分量过大,将会导致某些分量几乎消除