常用层对应于core模块,core内部定义了一系列常用的网络层,包括
全连接、激活层等
Dense层
1 2 3 4 5 6 7 8 9 10 11 12
| keras.layers.core.Dense( units, activation=None, use_bias=True, kernel_initializer='glorot_uniform', bias_initializer='zeros', kernel_regularizer=None, bias_regularizer=None, activity_regularizer=None, kernel_constraint=None, bias_constraint=None )
|
Dense就是常用的全连接层
Activation层
1 2 3 4
| keras.layers.core.Activation( activation, input_shape )
|
激活层对一个层的输出施加激活函数
Dropout层
1 2 3 4 5
| keras.layers.core.Dropout( rate, noise_shape=None, seed=None )
|
为输入数据施加Dropout
参数
输入
- 例:
(batch_size, timesteps, features)
,希望在各个
时间步上Dropout mask都相同,则可传入
noise_shape=(batch_size, 1, features)
Flatten层
1
| keras.layers.core.Flatten()
|
Flatten层用来将输入“压平”,把多维的输入一维化
- 常用在从卷积层到全连接层的过渡
- Flatten不影响batch的大小。
1 2 3 4 5 6 7 8
| model = Sequential() model.add(Convolution2D(64, 3, 3, border_mode='same', input_shape=(3, 32, 32)))
model.add(Flatten())
|
Reshape层
1 2 3 4
| keras.layers.core.Reshape( target_shape, input_shape )
|
Reshape层用来将输入shape转换为特定的shape
Permute层
1 2 3
| keras.layers.core.Permute( dims(tuple) )
|
Permute层将输入的维度按照给定模式进行重排
说明
- 当需要将RNN和CNN网络连接时,可能会用到该层。
参数
dims
:指定重排的模式,不包含样本数的维度(即下标
从1开始)
输出shape
例
1 2 3
| model = Sequential() model.add(Permute((2, 1), input_shape=(10, 64)))
|
RepeatVector层
1 2 3
| keras.layers.core.RepeatVector( n(int) )
|
RepeatVector层将输入重复n次
参数
输入:形如(batch_size, features)
的张量
输出:形如(bathc_size, n, features)
的张量
例
1 2 3 4 5 6
| model = Sequential() model.add(Dense(32, input_dim=32))
model.add(RepeatVector(3))
|
Lambda层
1 2 3 4 5 6
| keras.layers.core.Lambda( function, output_shape=None, mask=None, arguments=None )
|
对上一层的输出施以任何Theano/TensorFlow表达式
例
1 2
| model.add(Lambda(lambda x: x ** 2))
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
def antirectifier(x): x -= K.mean(x, axis=1, keepdims=True) x = K.l2_normalize(x, axis=1) pos = K.relu(x) neg = K.relu(-x) return K.concatenate([pos, neg], axis=1)
def antirectifier_output_shape(input_shape): shape = list(input_shape) assert len(shape) == 2 shape[-1] *= 2 return tuple(shape)
model.add(Lambda(antirectifier, output_shape=antirectifier_output_shape))
|
ActivityRegularizer层
1 2 3 4
| keras.layers.core.ActivityRegularization( l1=0.0, l2=0.0 )
|
经过本层的数据不会有任何变化,但会基于其激活值更新损失函数值
- 参数
l1
:1范数正则因子(正浮点数)
l2
:2范数正则因子(正浮点数)
Masking层
1
| keras.layers.core.Masking(mask_value=0.0)
|
使用给定的值对输入的序列信号进行“屏蔽”
- 例:缺少时间步为3和5的信号,希望将其掩盖
- 方法:赋值
x[:,3,:] = 0., x[:,5,:] = 0.
- 在LSTM层之前插入
mask_value=0.
的Masking层1 2 3
| model = Sequential() model.add(Masking(mask_value=0., input_shape=(timesteps, features))) model.add(LSTM(32))
|
.`的Masking层
1 2 3
| model = Sequential() model.add(Masking(mask_value=0., input_shape=(timesteps, features))) model.add(LSTM(32))
|
```