SpatialDropout1D层
keras.layers.core.SpatialDropout1D(p)
SpatialDropout1D与Dropout的作用类似,但它断开的是整个1D特征图,而不是单个神经元。如果一张特征图的相邻像素之间有很强的相关性(通常发生在低层的卷积层中),那么普通的dropout无法正则化其输出,否则就会导致明显的学习率下降。这种情况下,SpatialDropout1D能够帮助提高特征图之间的独立性,应该用其取代普通的Dropout
参数
- p:0~1的浮点数,控制需要断开的链接的比例
输入shape
输入形如(samples,timesteps,channels)的3D张量
输出shape
与输入相同
参考文献
SpatialDropout2D层
keras.layers.core.SpatialDropout2D(p, dim_ordering='default')
SpatialDropout2D与Dropout的作用类似,但它断开的是整个2D特征图,而不是单个神经元。如果一张特征图的相邻像素之间有很强的相关性(通常发生在低层的卷积层中),那么普通的dropout无法正则化其输出,否则就会导致明显的学习率下降。这种情况下,SpatialDropout2D能够帮助提高特征图之间的独立性,应该用其取代普通的Dropout
参数
- p:0~1的浮点数,控制需要断开的链接的比例
- dim_ordering:'th'或'tf',默认为
~/.keras/keras.json
配置的image_dim_ordering
值
输入shape
‘th’模式下,输入形如(samples,channels,rows,cols)的4D张量
‘tf’模式下,输入形如(samples,rows,cols,channels)的4D张量
注意这里的输入shape指的是函数内部实现的输入shape,而非函数接口应指定的input_shape
,请参考下面提供的例子。
输出shape
与输入相同
参考文献
SpatialDropout3D层
keras.layers.core.SpatialDropout3D(p, dim_ordering='default')
SpatialDropout3D与Dropout的作用类似,但它断开的是整个3D特征图,而不是单个神经元。如果一张特征图的相邻像素之间有很强的相关性(通常发生在低层的卷积层中),那么普通的dropout无法正则化其输出,否则就会导致明显的学习率下降。这种情况下,SpatialDropout3D能够帮助提高特征图之间的独立性,应该用其取代普通的Dropout
参数
- p:0~1的浮点数,控制需要断开的链接的比例
- dim_ordering:'th'或'tf',默认为
~/.keras/keras.json
配置的image_dim_ordering
值
输入shape
‘th’模式下,输入应为形如(samples,channels,input_dim1,input_dim2, input_dim3)的5D张量
‘tf’模式下,输入应为形如(samples,input_dim1,input_dim2, input_dim3,channels)的5D张量
输出shape
与输入相同
参考文献
TimeDisributedDense层
keras.layers.core.TimeDistributedDense(output_dim, init='glorot_uniform', activation='linear', weights=None, W_regularizer=None, b_regularizer=None, activity_regularizer=None, W_constraint=None, b_constraint=None, bias=True, input_dim=None, input_length=None)
为输入序列的每个时间步信号(即维度1)建立一个全连接层,当RNN网络设置为return_sequence=True
时尤其有用
- 注意:该层已经被弃用,请使用其包装器
TImeDistributed
完成此功能
model.add(TimeDistributed(Dense(32)))
参数
-
output_dim:大于0的整数,代表该层的输出维度。模型中非首层的全连接层其输入维度可以自动推断,因此非首层的全连接定义时不需要指定输入维度。
-
init:初始化方法,为预定义初始化方法名的字符串,或用于初始化权重的Theano函数。该参数仅在不传递
weights
参数时有意义。 -
activation:激活函数,为预定义的激活函数名(参考激活函数),或逐元素(element-wise)的Theano函数。如果不指定该参数,将不会使用任何激活函数(即使用线性激活函数:a(x)=x)
-
weights:权值,为numpy array的list。该list应含有一个形如(input_dim,output_dim)的权重矩阵和一个形如(output_dim,)的偏置向量。
-
W_regularizer:施加在权重上的正则项,为WeightRegularizer对象
-
b_regularizer:施加在偏置向量上的正则项,为WeightRegularizer对象
-
activity_regularizer:施加在输出上的正则项,为ActivityRegularizer对象
-
W_constraints:施加在权重上的约束项,为Constraints对象
-
b_constraints:施加在偏置上的约束项,为Constraints对象
-
bias:布尔值,是否包含偏置向量(即层对输入做线性变换还是仿射变换)
-
input_dim:整数,输入数据的维度。当该层作为网络的第一层时,必须指定该参数或
input_shape
参数。 -
input_length:输入序列的长度,为整数或None,若为None则代表输入序列是变长序列
输入shape
形如 (nb_sample, time_dimension, input_dim)
的3D张量
输出shape
形如 (nb_sample, time_dimension, output_dim)
的3D张量
Scikit-Learn接口包装器
我们可以通过包装器将Sequential
模型(仅有一个输入)作为Scikit-Learn工作流的一部分,相关的包装器定义在keras.wrappers.scikit_learn.py
中
目前,有两个包装器可用:
keras.wrappers.scikit_learn.KerasClassifier(build_fn=None, **sk_params)
实现了sklearn的分类器接口
keras.wrappers.scikit_learn.KerasRegressor(build_fn=None, **sk_params)
实现了sklearn的回归器接口
参数
-
build_fn:可调用的函数或类对象
-
sk_params:模型参数和训练参数
build_fn
应构造、编译并返回一个Keras模型,该模型将稍后用于训练/测试。build_fn
的值可能为下列三种之一:
-
一个函数
-
一个具有
call
方法的类对象 -
None,代表你的类继承自
KerasClassifier
或KerasRegressor
,其call
方法为其父类的call
方法
sk_params
以模型参数和训练(超)参数作为参数。合法的模型参数为build_fn
的参数。注意,‘build_fn’应提供其参数的默认值。所以我们不传递任何值给sk_params
也可以创建一个分类器/回归器
sk_params
还接受用于调用fit
,predict
,predict_proba
和score
方法的参数,如nb_epoch
,batch_size
等。这些用于训练或预测的参数按如下顺序选择:
-
传递给
fit
,predict
,predict_proba
和score
的字典参数 -
传递个
sk_params
的参数 -
keras.models.Sequential
,fit
,predict
,predict_proba
和score
的默认值
当使用scikit-learn的grid_search
接口时,合法的可转换参数是你可以传递给sk_params
的参数,包括训练参数。即,你可以使用grid_search
来搜索最佳的batch_size
或nb_epoch
以及其他模型参数