keras doc 7 Pooling Connceted Recurrent Embedding Activation

2018-07-25 11:25:23 浏览数 (1)

相关链接请阅读原文访问。

池化层

MaxPooling1D层

代码语言:javascript复制
keras.layers.convolutional.MaxPooling1D(pool_length=2, stride=None, border_mode='valid')

对时域1D信号进行最大值池化

参数

  • pool_length:下采样因子,如取2则将输入下采样到一半长度
  • stride:整数或None,步长值
  • border_mode:‘valid’或者‘same’
    • 注意,目前‘same’模式只能在TensorFlow作为后端时使用

输入shape

  • 形如(samples,steps,features)的3D张量

输出shape

  • 形如(samples,downsampled_steps,features)的3D张量

MaxPooling2D层

代码语言:javascript复制
keras.layers.convolutional.MaxPooling2D(pool_size=(2, 2), strides=None, border_mode='valid', dim_ordering='th')

为空域信号施加最大值池化

参数

  • pool_size:长为2的整数tuple,代表在两个方向(竖直,水平)上的下采样因子,如取(2,2)将使图片在两个维度上均变为原长的一半
  • strides:长为2的整数tuple,或者None,步长值。
  • border_mode:‘valid’或者‘same’
    • 注意,目前‘same’模式只能在TensorFlow作为后端时使用
  • dim_ordering:‘th’或‘tf’。‘th’模式中通道维(如彩色图像的3通道)位于第1个位置(维度从0开始算),而在‘tf’模式中,通道维位于第3个位置。例如128*128的三通道彩色图片,在‘th’模式中input_shape应写为(3,128,128),而在‘tf’模式中应写为(128,128,3),注意这里3出现在第0个位置,因为input_shape不包含样本数的维度,在其内部实现中,实际上是(None,3,128,128)和(None,128,128,3)。默认是image_dim_ordering指定的模式,可在~/.keras/keras.json中查看,若没有设置过则为'tf'。

输入shape

‘th’模式下,为形如(samples,channels, rows,cols)的4D张量

‘tf’模式下,为形如(samples,rows, cols,channels)的4D张量

输出shape

‘th’模式下,为形如(samples,channels, pooled_rows, pooled_cols)的4D张量

‘tf’模式下,为形如(samples,pooled_rows, pooled_cols,channels)的4D张量


MaxPooling3D层

代码语言:javascript复制
keras.layers.convolutional.MaxPooling3D(pool_size=(2, 2, 2), strides=None, border_mode='valid', dim_ordering='th')

为3D信号(空域或时空域)施加最大值池化

本层目前只能在使用Theano为后端时可用

参数

  • pool_size:长为3的整数tuple,代表在三个维度上的下采样因子,如取(2,2,2)将使信号在每个维度都变为原来的一半长。
  • strides:长为3的整数tuple,或者None,步长值。
  • border_mode:‘valid’或者‘same’
  • dim_ordering:‘th’或‘tf’。‘th’模式中通道维(如彩色图像的3通道)位于第1个位置(维度从0开始算),而在‘tf’模式中,通道维位于第4个位置。默认是image_dim_ordering指定的模式,可在~/.keras/keras.json中查看,若没有设置过则为'tf'。

输入shape

‘th’模式下,为形如(samples, channels, len_pool_dim1, len_pool_dim2, len_pool_dim3)的5D张量

‘tf’模式下,为形如(samples, len_pool_dim1, len_pool_dim2, len_pool_dim3,channels, )的5D张量

输出shape

‘th’模式下,为形如(samples, channels, pooled_dim1, pooled_dim2, pooled_dim3)的5D张量

‘tf’模式下,为形如(samples, pooled_dim1, pooled_dim2, pooled_dim3,channels,)的5D张量


AveragePooling1D层

代码语言:javascript复制
keras.layers.convolutional.AveragePooling1D(pool_length=2, stride=None, border_mode='valid')

对时域1D信号进行平均值池化

参数

  • pool_length:下采样因子,如取2则将输入下采样到一半长度
  • stride:整数或None,步长值
  • border_mode:‘valid’或者‘same’
    • 注意,目前‘same’模式只能在TensorFlow作为后端时使用

输入shape

  • 形如(samples,steps,features)的3D张量

输出shape

  • 形如(samples,downsampled_steps,features)的3D张量

AveragePooling2D层

代码语言:javascript复制
keras.layers.convolutional.AveragePooling2D(pool_size=(2, 2), strides=None, border_mode='valid', dim_ordering='th')

为空域信号施加平均值池化

参数

  • pool_size:长为2的整数tuple,代表在两个方向(竖直,水平)上的下采样因子,如取(2,2)将使图片在两个维度上均变为原长的一半
  • strides:长为2的整数tuple,或者None,步长值。
  • border_mode:‘valid’或者‘same’
    • 注意,目前‘same’模式只能在TensorFlow作为后端时使用

dim_ordering:‘th’或‘tf’。‘th’模式中通道维(如彩色图像的3通道)位于第1个位置(维度从0开始算),而在‘tf’模式中,通道维位于第3个位置。例如128*128的三通道彩色图片,在‘th’模式中input_shape应写为(3,128,128),而在‘tf’模式中应写为(128,128,3),注意这里3出现在第0个位置,因为input_shape不包含样本数的维度,在其内部实现中,实际上是(None,3,128,128)和(None,128,128,3)。默认是image_dim_ordering指定的模式,可在~/.keras/keras.json中查看,若没有设置过则为'tf'。

输入shape

‘th’模式下,为形如(samples,channels, rows,cols)的4D张量

‘tf’模式下,为形如(samples,rows, cols,channels)的4D张量

输出shape

‘th’模式下,为形如(samples,channels, pooled_rows, pooled_cols)的4D张量

‘tf’模式下,为形如(samples,pooled_rows, pooled_cols,channels)的4D张量


AveragePooling3D层

代码语言:javascript复制
keras.layers.convolutional.AveragePooling3D(pool_size=(2, 2, 2), strides=None, border_mode='valid', dim_ordering='th')

为3D信号(空域或时空域)施加平均值池化

本层目前只能在使用Theano为后端时可用

参数

  • pool_size:长为3的整数tuple,代表在三个维度上的下采样因子,如取(2,2,2)将使信号在每个维度都变为原来的一半长。
  • strides:长为3的整数tuple,或者None,步长值。
  • border_mode:‘valid’或者‘same’
  • dim_ordering:dim_ordering:‘th’或‘tf’。‘th’模式中通道维(如彩色图像的3通道)位于第1个位置(维度从0开始算),而在‘tf’模式中,通道维位于第4个位置。默认是image_dim_ordering指定的模式,可在~/.keras/keras.json中查看,若没有设置过则为'tf'。

输入shape

‘th’模式下,为形如(samples, channels, len_pool_dim1, len_pool_dim2, len_pool_dim3)的5D张量

‘tf’模式下,为形如(samples, len_pool_dim1, len_pool_dim2, len_pool_dim3,channels, )的5D张量

输出shape

‘th’模式下,为形如(samples, channels, pooled_dim1, pooled_dim2, pooled_dim3)的5D张量

‘tf’模式下,为形如(samples, pooled_dim1, pooled_dim2, pooled_dim3,channels,)的5D张量


GlobalMaxPooling1D层

代码语言:javascript复制
keras.layers.pooling.GlobalMaxPooling1D()

对于时间信号的全局最大池化

输入shape

  • 形如(samples,steps,features)的3D张量

输出shape

  • 形如(samples, features)的2D张量

GlobalAveragePooling1D层

代码语言:javascript复制
keras.layers.pooling.GlobalAveragePooling1D()

为时域信号施加全局平均值池化

输入shape

  • 形如(samples,steps,features)的3D张量

输出shape

  • 形如(samples, features)的2D张量

GlobalMaxPooling2D层

代码语言:javascript复制
keras.layers.pooling.GlobalMaxPooling2D(dim_ordering='default')

为空域信号施加全局最大值池化

参数

  • dim_ordering:‘th’或‘tf’。‘th’模式中通道维(如彩色图像的3通道)位于第1个位置(维度从0开始算),而在‘tf’模式中,通道维位于第3个位置。例如128*128的三通道彩色图片,在‘th’模式中input_shape应写为(3,128,128),而在‘tf’模式中应写为(128,128,3),注意这里3出现在第0个位置,因为input_shape不包含样本数的维度,在其内部实现中,实际上是(None,3,128,128)和(None,128,128,3)。默认是image_dim_ordering指定的模式,可在~/.keras/keras.json中查看,若没有设置过则为'tf'。

输入shape

‘th’模式下,为形如(samples,channels, rows,cols)的4D张量

‘tf’模式下,为形如(samples,rows, cols,channels)的4D张量

输出shape

形如(nb_samples, channels)的2D张量


GlobalAveragePooling2D层

代码语言:javascript复制
keras.layers.pooling.GlobalAveragePooling2D(dim_ordering='default')

为空域信号施加全局平均值池化

参数

  • dim_ordering:‘th’或‘tf’。‘th’模式中通道维(如彩色图像的3通道)位于第1个位置(维度从0开始算),而在‘tf’模式中,通道维位于第3个位置。例如128*128的三通道彩色图片,在‘th’模式中input_shape应写为(3,128,128),而在‘tf’模式中应写为(128,128,3),注意这里3出现在第0个位置,因为input_shape不包含样本数的维度,在其内部实现中,实际上是(None,3,128,128)和(None,128,128,3)。默认是image_dim_ordering指定的模式,可在~/.keras/keras.json中查看,若没有设置过则为'tf'。

输入shape

‘th’模式下,为形如(samples,channels, rows,cols)的4D张量

‘tf’模式下,为形如(samples,rows, cols,channels)的4D张量

输出shape

形如(nb_samples, channels)的2D张量

局部连接层LocallyConnceted

LocallyConnected1D层

代码语言:javascript复制
keras.layers.local.LocallyConnected1D(nb_filter, filter_length, init='uniform', activation='linear', weights=None, border_mode='valid', subsample_length=1, W_regularizer=None, b_regularizer=None, activity_regularizer=None, W_constraint=None, b_constraint=None, bias=True, input_dim=None, input_length=None)

LocallyConnected1D层与Convolution1D工作方式类似,唯一的区别是不进行权值共享。即施加在不同输入patch的滤波器是不一样的,当使用该层作为模型首层时,需要提供参数input_diminput_shape参数。参数含义参考Convolution1D。注意该层的input_shape必须完全指定,不支持None

参数

  • nb_filter:卷积核的数目(即输出的维度)
  • filter_length:卷积核的空域或时域长度
  • init:初始化方法,为预定义初始化方法名的字符串,或用于初始化权重的Theano函数。该参数仅在不传递weights参数时有意义。
  • activation:激活函数,为预定义的激活函数名(参考激活函数),或逐元素(element-wise)的Theano函数。如果不指定该参数,将不会使用任何激活函数(即使用线性激活函数:a(x)=x)
  • weights:权值,为numpy array的list。该list应含有一个形如(input_dim,output_dim)的权重矩阵和一个形如(output_dim,)的偏置向量。
  • border_mode:边界模式,为“valid”或“same”
  • subsample_length:输出对输入的下采样因子
  • W_regularizer:施加在权重上的正则项,为WeightRegularizer对象
  • b_regularizer:施加在偏置向量上的正则项,为WeightRegularizer对象
  • activity_regularizer:施加在输出上的正则项,为ActivityRegularizer对象
  • W_constraints:施加在权重上的约束项,为Constraints对象
  • b_constraints:施加在偏置上的约束项,为Constraints对象
  • bias:布尔值,是否包含偏置向量(即层对输入做线性变换还是仿射变换)
  • input_dim:整数,输入数据的维度。当该层作为网络的第一层时,必须指定该参数或input_shape参数。
  • input_length:当输入序列的长度固定时,该参数为输入序列的长度。当需要在该层后连接Flatten层,然后又要连接Dense层时,需要指定该参数,否则全连接的输出无法计算出来。

输入shape

形如(samples,steps,input_dim)的3D张量

输出shape

形如(samples,new_steps,nb_filter)的3D张量,因为有向量填充的原因,steps的值会改变

例子

代码语言:javascript复制
# apply a unshared weight convolution 1d of length 3 to a sequence with# 10 timesteps, with 64 output filtersmodel = Sequential()
model.add(LocallyConnected1D(64, 3, input_shape=(10, 32)))# now model.output_shape == (None, 8, 64)# add a new conv1d on topmodel.add(LocallyConnected1D(32, 3))# now model.output_shape == (None, 6, 32)

LocallyConnected2D层

代码语言:javascript复制
keras.layers.local.LocallyConnected2D(nb_filter, nb_row, nb_col, init='glorot_uniform', activation='linear', weights=None, border_mode='valid', subsample=(1, 1), dim_ordering='default', W_regularizer=None, b_regularizer=None, activity_regularizer=None, W_constraint=None, b_constraint=None, bias=True)

LocallyConnected2D层与Convolution2D工作方式类似,唯一的区别是不进行权值共享。即施加在不同输入patch的滤波器是不一样的,当使用该层作为模型首层时,需要提供参数input_diminput_shape参数。参数含义参考Convolution2D。注意该层的input_shape必须完全指定,不支持None

参数

  • nb_filter:卷积核的数目
  • nb_row:卷积核的行数
  • nb_col:卷积核的列数
  • init:初始化方法,为预定义初始化方法名的字符串,或用于初始化权重的Theano函数。该参数仅在不传递weights参数时有意义。
  • activation:激活函数,为预定义的激活函数名(参考激活函数),或逐元素(element-wise)的Theano函数。如果不指定该参数,将不会使用任何激活函数(即使用线性激活函数:a(x)=x)
  • weights:权值,为numpy array的list。该list应含有一个形如(input_dim,output_dim)的权重矩阵和一个形如(output_dim,)的偏置向量。
  • border_mode:边界模式,为“valid”或“same”
  • subsample:长为2的tuple,输出对输入的下采样因子,更普遍的称呼是“strides”
  • W_regularizer:施加在权重上的正则项,为WeightRegularizer对象
  • b_regularizer:施加在偏置向量上的正则项,为WeightRegularizer对象
  • activity_regularizer:施加在输出上的正则项,为ActivityRegularizer对象
  • W_constraints:施加在权重上的约束项,为Constraints对象
  • b_constraints:施加在偏置上的约束项,为Constraints对象
  • dim_ordering:‘th’或‘tf’。‘th’模式中通道维(如彩色图像的3通道)位于第1个位置(维度从0开始算),而在‘tf’模式中,通道维位于第3个位置。例如128*128的三通道彩色图片,在‘th’模式中input_shape应写为(3,128,128),而在‘tf’模式中应写为(128,128,3),注意这里3出现在第0个位置,因为input_shape不包含样本数的维度,在其内部实现中,实际上是(None,3,128,128)和(None,128,128,3)。默认是image_dim_ordering指定的模式,可在~/.keras/keras.json中查看,若没有设置过则为'tf'。
  • bias:布尔值,是否包含偏置向量(即层对输入做线性变换还是仿射变换)

输入shape

‘th’模式下,输入形如(samples,channels,rows,cols)的4D张量

‘tf’模式下,输入形如(samples,rows,cols,channels)的4D张量

注意这里的输入shape指的是函数内部实现的输入shape,而非函数接口应指定的input_shape,请参考下面提供的例子。

输出shape

‘th’模式下,为形如(samples,nb_filter, new_rows, new_cols)的4D张量

‘tf’模式下,为形如(samples,new_rows, new_cols,nb_filter)的4D张量

输出的行列数可能会因为填充方法而改变

例子

代码语言:javascript复制
# apply a 3x3 unshared weights convolution with 64 output filters on a 32x32 image:model = Sequential()
model.add(LocallyConnected2D(64, 3, 3, input_shape=(3, 32, 32)))# now model.output_shape == (None, 64, 30, 30)# notice that this layer will consume (30*30)*(3*3*3*64)   (30*30)*64 parameters# add a 3x3 unshared weights convolution on top, with 32 output filters:model.add(LocallyConnected2D(32, 3, 3))# now model.output_shape == (None, 32, 28, 28)

递归层Recurrent

Recurrent层

代码语言:javascript复制
keras.layers.recurrent.Recurrent(weights=None, return_sequences=False, go_backwards=False, stateful=False, unroll=False, consume_less='cpu', input_dim=None, input_length=None)

这是递归层的抽象类,请不要在模型中直接应用该层(因为它是抽象类,无法实例化任何对象)。请使用它的子类LSTMSimpleRNN

所有的递归层(LSTM,GRU,SimpleRNN)都服从本层的性质,并接受本层指定的所有关键字参数。

参数

  • weights:numpy array的list,用以初始化权重。该list形如[(input_dim, output_dim),(output_dim, output_dim),(output_dim,)]
  • return_sequences:布尔值,默认False,控制返回类型。若为True则返回整个序列,否则仅返回输出序列的最后一个输出
  • go_backwards:布尔值,默认为False,若为True,则逆向处理输入序列
  • stateful:布尔值,默认为False,若为True,则一个batch中下标为i的样本的最终状态将会用作下一个batch同样下标的样本的初始状态。
  • unroll:布尔值,默认为False,若为True,则递归层将被展开,否则就使用符号化的循环。当使用TensorFlow为后端时,递归网络本来就是展开的,因此该层不做任何事情。层展开会占用更多的内存,但会加速RNN的运算。层展开只适用于短序列。
  • consume_less:‘cpu’或‘mem’之一。若设为‘cpu’,则RNN将使用较少、较大的矩阵乘法来实现,从而在CPU上会运行更快,但会更消耗内存。如果设为‘mem’,则RNN将会较多的小矩阵乘法来实现,从而在GPU并行计算时会运行更快(但在CPU上慢),并占用较少内存。
  • input_dim:输入维度,当使用该层为模型首层时,应指定该值(或等价的指定input_shape)
  • input_length:当输入序列的长度固定时,该参数为输入序列的长度。当需要在该层后连接Flatten层,然后又要连接Dense层时,需要指定该参数,否则全连接的输出无法计算出来。注意,如果递归层不是网络的第一层,你需要在网络的第一层中指定序列的长度,如通过input_shape指定。

输入shape

形如(samples,timesteps,input_dim)的3D张量

输出shape

如果return_sequences=True:返回形如(samples,timesteps,output_dim)的3D张量

否则,返回形如(samples,output_dim)的2D张量

例子

代码语言:javascript复制
# as the first layer in a Sequential modelmodel = Sequential()
model.add(LSTM(32, input_shape=(10, 64)))# now model.output_shape == (None, 10, 32)# note: `None` is the batch dimension.# the following is identical:model = Sequential()
model.add(LSTM(32, input_dim=64, input_length=10))# for subsequent layers, not need to specify the input size:model.add(LSTM(16))

屏蔽输入数据(Masking)

递归层支持通过时间步变量对输入数据进行Masking,如果想将输入数据的一部分屏蔽掉,请使用Embedding层并将参数mask_zero设为True

TensorFlow警告

目前为止,当使用TensorFlow作为后端时,序列的时间步数目必须在网络中指定。通过input_length(如果网络首层是递归层)或完整的input_shape来指定该值。

使用状态RNN的注意事项

可以将RNN设置为‘stateful’,意味着训练时每个batch的状态都会被重用于初始化下一个batch的初始状态。状态RNN假设连续的两个batch之中,相同下标的元素有一一映射关系。

要启用状态RNN,请在实例化层对象时指定参数stateful=True,并指定模型使用固定大小的batch:通过在模型的第一层传入batch_input_shape=(...)来实现。该参数应为包含batch大小的元组,例如(32,10,100)代表每个batch的大小是32.

如果要将递归层的状态重置,请调用.reset_states(),对模型调用将重置模型中所有状态RNN的状态。对单个层调用则只重置该层的状态。

以TensorFlow作为后端时使用dropout的注意事项

当使用TensorFlow作为后端时,如果要在递归层使用dropout,需要同上面所述的一样指定好固定的batch大小


SimpleRNN层

代码语言:javascript复制
keras.layers.recurrent.SimpleRNN(output_dim, init='glorot_uniform', inner_init='orthogonal', activation='tanh', W_regularizer=None, U_regularizer=None, b_regularizer=None, dropout_W=0.0, dropout_U=0.0)

全连接RNN网络,RNN的输出会被回馈到输入

参数

  • output_dim:内部投影和输出的维度
  • init:初始化方法,为预定义初始化方法名的字符串,或用于初始化权重的Theano函数。
  • inner_init:内部单元的初始化方法
  • activation:激活函数,为预定义的激活函数名(参考激活函数)
  • W_regularizer:施加在权重上的正则项,为WeightRegularizer对象
  • U_regularizer:施加在递归权重上的正则项,为WeightRegularizer对象
  • b_regularizer:施加在偏置向量上的正则项,为WeightRegularizer对象
  • dropout_W:0~1之间的浮点数,控制输入单元到输入门的连接断开比例
  • dropout_U:0~1之间的浮点数,控制输入单元到递归连接的断开比例

参考文献

  • A Theoretically Grounded Application of Dropout in Recurrent Neural Networks

GRU层

代码语言:javascript复制
keras.layers.recurrent.GRU(output_dim, init='glorot_uniform', inner_init='orthogonal', activation='tanh', inner_activation='hard_sigmoid', W_regularizer=None, U_regularizer=None, b_regularizer=None, dropout_W=0.0, dropout_U=0.0)

门限递归单元(详见参考文献)

参数

  • output_dim:内部投影和输出的维度
  • init:初始化方法,为预定义初始化方法名的字符串,或用于初始化权重的Theano函数。
  • inner_init:内部单元的初始化方法
  • activation:激活函数,为预定义的激活函数名(参考激活函数)
  • inner_activation:内部单元激活函数
  • W_regularizer:施加在权重上的正则项,为WeightRegularizer对象
  • U_regularizer:施加在递归权重上的正则项,为WeightRegularizer对象
  • b_regularizer:施加在偏置向量上的正则项,为WeightRegularizer对象
  • dropout_W:0~1之间的浮点数,控制输入单元到输入门的连接断开比例
  • dropout_U:0~1之间的浮点数,控制输入单元到递归连接的断开比例

参考文献

  • On the Properties of Neural Machine Translation: Encoder–Decoder Approaches
  • Empirical Evaluation of Gated Recurrent Neural Networks on Sequence Modeling
  • A Theoretically Grounded Application of Dropout in Recurrent Neural Networks

LSTM层

代码语言:javascript复制
keras.layers.recurrent.LSTM(output_dim, init='glorot_uniform', inner_init='orthogonal', forget_bias_init='one', activation='tanh', inner_activation='hard_sigmoid', W_regularizer=None, U_regularizer=None, b_regularizer=None, dropout_W=0.0, dropout_U=0.0)

Keras长短期记忆模型,关于此算法的详情,请参考本教程

参数

  • output_dim:内部投影和输出的维度
  • init:初始化方法,为预定义初始化方法名的字符串,或用于初始化权重的Theano函数。
  • inner_init:内部单元的初始化方法
  • forget_bias_init:遗忘门偏置的初始化函数,Jozefowicz et al.建议初始化为全1元素
  • activation:激活函数,为预定义的激活函数名(参考激活函数)
  • inner_activation:内部单元激活函数
  • W_regularizer:施加在权重上的正则项,为WeightRegularizer对象
  • U_regularizer:施加在递归权重上的正则项,为WeightRegularizer对象
  • b_regularizer:施加在偏置向量上的正则项,为WeightRegularizer对象
  • dropout_W:0~1之间的浮点数,控制输入单元到输入门的连接断开比例
  • dropout_U:0~1之间的浮点数,控制输入单元到递归连接的断开比例

参考文献

  • Long short-term memory (original 1997 paper)
  • Learning to forget: Continual prediction with LSTM
  • Supervised sequence labelling with recurrent neural networks
  • A Theoretically Grounded Application of Dropout in Recurrent Neural Networks

嵌入层 Embedding

Embedding层

代码语言:javascript复制
keras.layers.embeddings.Embedding(input_dim, output_dim, init='uniform', input_length=None, W_regularizer=None, activity_regularizer=None, W_constraint=None, mask_zero=False, weights=None, dropout=0.0)

嵌入层将正整数(下标)转换为具有固定大小的向量,如[[4],[20]]->[[0.25,0.1],[0.6,-0.2]]

Embedding层只能作为模型的第一层

参数

  • input_dim:大或等于0的整数,字典长度,即输入数据最大下标 1
  • output_dim:大于0的整数,代表全连接嵌入的维度
  • init:初始化方法,为预定义初始化方法名的字符串,或用于初始化权重的Theano函数。该参数仅在不传递weights参数时有意义。
  • activation:激活函数,为预定义的激活函数名(参考激活函数),或逐元素(element-wise)的Theano函数。如果不指定该参数,将不会使用任何激活函数(即使用线性激活函数:a(x)=x)
  • weights:权值,为numpy array的list。该list应仅含有一个如(input_dim,output_dim)的权重矩阵
  • W_regularizer:施加在权重上的正则项,为WeightRegularizer对象
  • W_constraints:施加在权重上的约束项,为Constraints对象
  • mask_zero:布尔值,确定是否将输入中的‘0’看作是应该被忽略的‘填充’(padding)值,该参数在使用递归层处理变长输入时有用。设置为True的话,模型中后续的层必须都支持masking,否则会抛出异常
  • input_length:当输入序列的长度固定时,该值为其长度。如果要在该层后接Flatten层,然后接Dense层,则必须指定该参数,否则Dense层的输出维度无法自动推断。
  • dropout:0~1的浮点数,代表要断开的嵌入比例,

输入shape

形如(samples,sequence_length)的2D张量

输出shape

形如(samples, sequence_length, output_dim)的3D张量

参考文献

  • A Theoretically Grounded Application of Dropout in Recurrent Neural Networks

高级激活层Advanced Activation

LeakyReLU层

代码语言:javascript复制
keras.layers.advanced_activations.LeakyReLU(alpha=0.3)

LeakyRelU是修正线性单元(Rectified Linear Unit,ReLU)的特殊版本,当不激活时,LeakyReLU仍然会有非零输出值,从而获得一个小梯度,避免ReLU可能出现的神经元“死亡”现象。即,f(x)=alpha * x for x < 0, f(x) = x for x>=0

参数

  • alpha:大于0的浮点数,代表激活函数图像中第三象限线段的斜率

输入shape

任意,当使用该层为模型首层时需指定input_shape参数

输出shape

与输入相同


PReLU层

代码语言:javascript复制
keras.layers.advanced_activations.PReLU(init='zero', weights=None)

该层为参数化的ReLU(Parametric ReLU),表达式是:f(x) = alpha * x for x < 0,f(x) = x for x>=0,此处的alpha为一个与xshape相同的可学习的参数向量。

参数

  • init:alpha的初始化函数
  • weights:alpha的初始化值,为具有单个numpy array的list

输入shape

任意,当使用该层为模型首层时需指定input_shape参数

输出shape

与输入相同

参考文献

  • Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification

ELU层

代码语言:javascript复制
keras.layers.advanced_activations.ELU(alpha=1.0)

ELU层是指数线性单元(Exponential Linera Unit),表达式为: 该层为参数化的ReLU(Parametric ReLU),表达式是:f(x) = alpha * (exp(x) - 1.) for x < 0, f(x) = x for x>=0

参数

  • alpha:控制负因子的参数

输入shape

任意,当使用该层为模型首层时需指定input_shape参数

输出shape

与输入相同

参考文献

  • Fast and Accurate Deep Network Learning by Exponential Linear Units (ELUs)

ParametricSoftplus层

代码语言:javascript复制
keras.layers.advanced_activations.ParametricSoftplus(alpha_init=0.2, beta_init=5.0, weights=None)

该层是参数化的Softplus,表达式是:f(x) = alpha * log(1 exp(beta * x))

参数

  • alpha_init:浮点数,alpha的初始值
  • beta_init:浮点数,beta的初始值
  • weights:初始化权重,为含有两个numpy array的list

输入shape

任意,当使用该层为模型首层时需指定input_shape参数

输出shape

与输入相同

参考文献

  • Inferring Nonlinear Neuronal Computation Based on Physiologically Plausible Inputs

ThresholdedReLU层

代码语言:javascript复制
keras.layers.advanced_activations.ThresholdedReLU(theta=1.0)

该层是带有门限的ReLU,表达式是:f(x) = x for x > theta,f(x) = 0 otherwise

参数

  • theata:大或等于0的浮点数,激活门限位置

输入shape

任意,当使用该层为模型首层时需指定input_shape参数

输出shape

与输入相同

参考文献

  • Zero-Bias Autoencoders and the Benefits of Co-Adapting Features


SReLU层

代码语言:javascript复制
keras.layers.advanced_activations.SReLU(t_left_init='zero', a_left_init='glorot_uniform', t_right_init='glorot_uniform', a_right_init='one')

该层是S形的ReLU

参数

  • t_left_init:左侧截断初始化函数
  • a_left_init:左侧斜率初始化函数
  • t_right_init:右侧截断初始化函数
  • a_right_init:右侧斜率初始化函数

输入shape

任意,当使用该层为模型首层时需指定input_shape参数

输出shape

与输入相同

参考文献

  • Deep Learning with S-shaped Rectified Linear Activation Units

0 人点赞