keras学习-SpatialDropout1D层

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的值可能为下列三种之一:

  1. 一个函数

  2. 一个具有call方法的类对象

  3. None,代表你的类继承自KerasClassifierKerasRegressor,其call方法为其父类的call方法

sk_params以模型参数和训练(超)参数作为参数。合法的模型参数为build_fn的参数。注意,‘build_fn’应提供其参数的默认值。所以我们不传递任何值给sk_params也可以创建一个分类器/回归器

sk_params还接受用于调用fitpredictpredict_probascore方法的参数,如nb_epochbatch_size等。这些用于训练或预测的参数按如下顺序选择:

  1. 传递给fitpredictpredict_probascore的字典参数

  2. 传递个sk_params的参数

  3. keras.models.Sequentialfitpredictpredict_probascore的默认值

当使用scikit-learn的grid_search接口时,合法的可转换参数是你可以传递给sk_params的参数,包括训练参数。即,你可以使用grid_search来搜索最佳的batch_sizenb_epoch以及其他模型参数

 

猜你喜欢

转载自blog.csdn.net/sinat_22510827/article/details/89526712
今日推荐