Keras学习笔记三:BatchNormalization层和融合层(Merge层)


1. BatchNormalization层:该层在每个batch上将前一层的激活值重新规范化,即使得其输出数据的均值接近0,其标准差接近1

keras.layers.normalization.BatchNormalization(axis=-1, momentum=0.99, epsilon=0.001,

center=True, scale=True, beta_initializer='zeros', gamma_initializer='ones',

moving_mean_initializer='zeros', moving_variance_initializer='ones', beta_regularizer=None,

gamma_regularizer=None, beta_constraint=None, gamma_constraint=None)

参数

·       axis:整数,指定要规范化的轴,通常为特征轴。例如在进行data_format="channels_first2D卷积后,一般会设axis=1

·       momentum:动态均值的动量

·       epsilon:大于0的小浮点数,用于防止除0错误

·       center:若设为True,将会将beta作为偏置加上去,否则忽略参数beta

·       scale:若设为True,则会乘以gamma,否则不使用gamma。当下一层是线性的时,可以设False,因为scaling的操作将被下一层执行。

·       beta_initializerbeta权重的初始方法

·       gamma_initializer:gamma的初始化方法

·       moving_mean_initializer:动态均值的初始化方法

·       moving_variance_initializer:动态方差的初始化方法

·       beta_regularizer:可选的beta正则

·       gamma_regularizer:可选的gamma正则

·       beta_constraint:可选的beta约束

·       gamma_constraint:可选的gamma约束

输入shape

任意,当使用本层为模型首层时,指定input_shape参数时有意义。

输出shape

与输入shape相同

参考文献

·       Batch Normalization: Accelerating Deep Network Trainingby Reducing Internal Covariate Shift

TipsBN层的作用

1)加速收敛2)控制过拟合,可以少用或不用Dropout和正则3)降低网络对初始化权重不敏感4)允许使用较大的学习率


2. 融合层:Merge层提供了一系列用于融合两个层或两个张量的层对象和方法。以大写首字母开头的是Layer类,

以小写字母开头的是张量的函数。小写字母开头的张量函数在内部实际上是调用了大写字母开头的层。

(1)   Add, keras.layers.merge.Add(),

该层接收一个列表的同shape张量,并返回它们的和,shape不变。

(2)   Multiply, keras.layers.merge.Multiply()

该层接收一个列表的同shape张量,并返回它们的逐元素均值,shape不变

(3)   Maximum, keras.layers.merge.Maximum()

该层接收一个列表的同shape张量,并返回它们的逐元素最大值,shape不变。

(4)   Concatente, keras.layers.merge.Concatenate(axis=-1)

该层接收一个列表的同shape张量,并返回它们的按照给定轴相接构成的向量。

参数

·       axis:想接的轴

·       **kwargs:普通的Layer关键字参数

(5)   Dot, keras.layers.merge.Dot(axes,normalize=False)

计算两个tensor中样本的张量乘积。例如,如果两个张量ab的shape都为(batch_size, n),则输出为形如(batch_size,1)的张量,结果张量每个batch的数据都是a[i,:]和b[i,:]的矩阵(向量)点积。

参数

·       axes:整数或整数的tuple,执行乘法的轴。

·       normalize:布尔值,是否沿执行成绩的轴做L2规范化,如果设为True,那么乘积的输出是两个样本的余弦相似性。

·       **kwargs:普通的Layer关键字参数

(6)   add, add(inputs),Add层的函数式包装

参数:

·       inputs:长度至少为2的张量列表A

·       **kwargs:普通的Layer关键字参数

(7)   multiply, multiply(inputs), Multiply的函数包装

###参数:

* inputs:长度至少为2的张量列表

***kwargs:普通的Layer关键字参数

###返回值

输入列表张量之逐元素积

(8)   maximum, maximum(inputs) ,Maximum的函数包装

参数:

·       inputs:长度至少为2的张量列表

·       **kwargs:普通的Layer关键字参数

返回值

输入列表张量之逐元素均值

(9)   concatenate, concatenate(inputs, axis=-1)), Concatenate的函数包装

参数

·       inputs:长度至少为2的张量列

·       axis:相接的轴

·       **kwargs:普通的Layer关键字参数

(10) Dot, dot(inputs, axes, normalize=False), Dot的函数包装

参数

·       inputs:长度至少为2的张量列

·       axes:整数或整数的tuple,执行乘法的轴。

·       normalize:布尔值,是否沿执行成绩的轴做L2规范化,如果设为True,那么乘积的输出是两个样本的余弦相似性。

·       **kwargs:普通的Layer关键字参数

 

 

 


你可能感兴趣的:(keras)