全连接层

Dense是最常用的全连接层,也称为密集连接层,位于keras.layersDense采用以下构造方法建立。

keras.layers.Dense(
	units, 
	activation=None, 
	use_bias=True, 
	kernel_initializer='global_uniform', 
	bias_initializer='zeros', 
	kernel_regularizer=None, 
	bias_regularizer=None, 
	activity_regularizer=None, 
	kernel_constraint=None, 
	bias_constraint=None)

其中各个参数的含义如下。

  • units,输出空间维度,可以直观的理解为网络进行学习时内部所拥有的自由度,维度越多,网络越能够学到更加复杂的表示,但计算代价也变得更大。
  • activation,激活函数,若不指定,则使用线性激活。
  • use_bias,设定是否使用偏移量。
  • kernel_initializer,核心权值矩阵初始化器。
  • bias_initializer,偏置向量初始化器。
  • kernel_regularizer,核心权值矩阵正则化函数。
  • bias_regularizer,偏置向量正则化函数。
  • activity_regularizer,层输出正则化函数。
  • kernel_constraint,核心权值矩阵的约束函数。
  • bias_constraint,偏置向量的约束函数。

Dense层主要实现\(output=activation(dot(input, kernel) + bias)\)的操作,其中\(activation\)是按逐个元素计算的激活函数。Dense层的输入形状为(batch_size, ..., input_dim),输出形状为(batch_size, ..., units)

Dense层的“全连接”表示上一层的每一个神经元都与下一层的每一个神经元是相互连接的。加入全连接层是学习特征之间非线性组合的有效办法,例如将卷积层和池化层提取出来的特征进行特征之间的组合。