Layer Normalization

一、Layer Normalization公式

1)计算各层的期望μ和标注差σ

l表示第l个隐藏层,H表示该层的节点数,a表示某一个节点在激活前的值,即a=w*x。

2)标准化

g和b分别表示增益和偏置参数,可以纳入训练随样本一群训练。

3)加入激活函数输出

 二、Conditional Layer Normalization

这个思路主要来源于苏剑林的博客基于Conditional Layer Normalization的条件文本生成

比如先确定类别,然后按类别随机生成文本,也就是Conditional Language Model;又比如传入一副图像,图像就是前提条件,来生成一段相关的文本描述,也就是Image Caption。

具体实现,将条件通过不同的矩阵变换(即线性映射)分别变成和上述公式中g和b一样的维度,然后将变换结果加到g和b上去:

代码实现如下

if self.center:
    self.beta_dense = Dense( units=shape[0], use_bias=False, kernel_initializer='zeros' )
if self.scale:
    self.gamma_dense = Dense(units=shape[0], use_bias=False, kernel_initializer='zeros' )

if self.center:
    beta = self.beta_dense(cond) + self.beta
if self.scale:
    gamma = self.gamma_dense(cond) + self.gamma

 

posted @ 2020-04-19 16:01  光彩照人  阅读(5725)  评论(0编辑  收藏  举报