1. 卷积层
1.1. Convolution1D层
一维卷积层,用以在一维输入信号上进行邻域滤波。当使用该层作为首层时,需要提供关键字参数 input_dim 或 input_shape 。
keras.layers.convolutional.Convolution1D(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)
- 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 的值会改变
# apply a convolution 1d of length 3 to a sequence with 10 timesteps,
# with 64 output filters
model = Sequential()
model.add(Convolution1D(64, 3, border_mode='same', input_shape=(10, 32)))
# now model.output_shape == (None, 10, 64)
# add a new conv1d on top
model.add(Convolution1D(32, 3, border_mode='same'))
# now model.output_shape == (None, 10, 32)
可以将Convolution1D看作Convolution2D的快捷版,对例子中( 10, 32)的信号进行1D卷积相当于对其进行卷积核为( filter_length, 32)的2D卷积。
1.2. AtrousConvolution1D层
AtrousConvolution1D层用于对1D信号进行滤波,是膨胀/带孔洞的卷积。参数与Convolution1D类似
keras.layers.convolutional.AtrousConvolution1D(nb_filter, filter_length, init='uniform', activation='linear', weights=None, border_mode='valid', subsample_length=1, atrous_rate=1, W_regularizer=None, b_regularizer=None, activity_regularizer=None, W_constraint=None, b_constraint=None, bias=True)
- atrous_rate:卷积核膨胀的系数,在其他地方也被称为'filter_dilation'
1.3. Convolution2D层
二维卷积层对二维输入进行滑动窗卷积,当使用该层作为第一层时,应提供 input_shape 参数。
keras.layers.convolutional.Convolution2D(nb_filter, nb_row, nb_col, init='glorot_uniform', activation='linear', weights=None, border_mode='valid', subsample=(1, 1), dim_ordering='th', W_regularizer=None, b_regularizer=None, activity_regularizer=None, W_constraint=None, b_constraint=None, bias=True)
- 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’。
- bias:布尔值,是否包含偏置向量(即层对输入做线性变换还是仿射变换)
输入shape‘th’模式下,输入形如( samples, channels, rows, cols)的4D张量,‘tf’模式下,输入形如( samples, rows, cols, channels)的4D张量
输出shape‘th’模式下,为形如( samples, nb_filter, new_rows, new_cols)的4D张量,‘tf’模式下,为形如( samples, new_rows, new_cols, nb_filter)的4D张量,输出的行列数可能会因为填充方法而改变
# apply a 3x3 convolution with 64 output filters on a 256x256 image:
model = Sequential()
model.add(Convolution2D(64, 3, 3, border_mode='same', input_shape=(3, 256, 256)))
# now model.output_shape == (None, 64, 256, 256)
1.4. AtrousConvolution2D层
该层对二维输入进行Atrous卷积,也即膨胀卷积或带孔洞的卷积。
1.5. SeparableConvolution2D层
该层是对2D输入的可分离卷积
可分离卷积首先按深度方向进行卷积(对每个输入通道分别卷积),然后逐点进行卷积,将上一步的卷积结果混合到输出通道中。参数 depth_multiplier 控制了在depthwise卷积(第一步)的过程中,每个输入通道信号产生多少个输出通道。直观来说,可分离卷积可以看做讲一个卷积核分解为两个小的卷积核,或看作Inception模块的一种极端情况。当使用该层作为第一层时,应提供 input_shape 参数。
该层目前只能在Tensorflow后端的条件下使用
keras.layers.convolutional.SeparableConvolution2D(nb_filter, nb_row, nb_col, init='glorot_uniform', activation='linear', weights=None, border_mode='valid', subsample=(1, 1), depth_multiplier=1, dim_ordering='default', depthwise_regularizer=None, pointwise_regularizer=None, b_regularizer=None, activity_regularizer=None, depthwise_constraint=None, pointwise_constraint=None, b_constraint=None, bias=True)
1.6. Deconvolution2D层
该层是卷积操作的转置(反卷积)。需要反卷积的情况通常发生在用户想要对一个普通卷积的结果做反方向的变换。
1.7. Convolution3D层
三维卷积对三维的输入进行滑动窗卷积
1.8. Cropping1D层
在时间轴( axis1)上对1D输入(即时间序列)进行裁剪
keras.layers.convolutional.Cropping1D(cropping=(1, 1))
- cropping:长为2的tuple,指定在序列的首尾要裁剪掉多少个元素
输入shape形如( samples, axis_to_crop, features)的3D张量
输出shape形如( samples, cropped_axis, features)的3D张量
1.9. Cropping2D层
对2D输入(图像)进行裁剪,将在空域维度,即宽和高的方向上裁剪
1.10. Cropping3D层
对3D输入裁剪
1.11. UpSampling1D层
在时间轴上,将每个时间步重复 length 次
1.12. UpSampling2D层 UpSampling3D层
将数据的行和列分别重复size[0]和size[1]次
将数据的三个维度上分别重复size[0]、 size[1]和ize[2]次
1.13. ZeroPadding1D层
对1D输入的首尾端(如时域序列)填充0,以控制卷积以后向量的长度
1.14. ZeroPadding2D层 ZeroPadding3D层
对2D输入(如图片)的边界填充0
将数据的三个维度上填充0
2. 池化层
2.1. MaxPooling1D层
对时域1D信号进行最大值池化
keras.layers.convolutional.MaxPooling1D(pool_length=2, stride=None, border_mode='valid')
- pool_length:下采样因子,如取2则将输入下采样到一半长度
- stride:整数或None,步长值
- border_mode: ‘valid’或者‘same’注意,目前‘same’模式只能在TensorFlow作为后端时使用
输入shape形如( samples, steps, features)的3D张量
输出shape形如( samples, downsampled_steps, features)的3D张量
2.2. MaxPooling2D层 MaxPooling3D层
keras.layers.convolutional.MaxPooling2D(pool_size=(2, 2), strides=None, border_mode='valid', dim_ordering='th')
keras.layers.convolutional.MaxPooling3D(pool_size=(2, 2, 2), strides=None, border_mode='valid', dim_ordering='th')
2.3. AveragePooling1D层 AveragePooling2D层 AveragePooling3D层
对信号进行平均值池化
2.4. GlobalMaxPooling1D层 GlobalMaxPooling2D层
为信号施加全局最大值池化
2.5. GlobalAveragePooling1D层 GlobalAveragePooling2D层
为信号施加全局平均值池化
3. 局部连接层
3.1. LocallyConnected1D层
LocallyConnected1D 层与 Convolution1D 工作方式类似,唯一的区别是不进行权值共享。即施加在不同输入patch的滤波器是不一样的,当使用该层作为模型首层时,需要提供参数 input_dim 或 input_shape 参数。参数含义参考 Convolution1D 。注意该层的 input_shape 必须完全指定,不支持 None
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)
3.2. LocallyConnected2D层
LocallyConnected2D 层与 Convolution2D 工作方式类似,唯一的区别是不进行权值共享。