CNN中全连接层是什么样的?

名称:全连接。意思就是输出层的神经元和输入层的每个神经元都连接。

例子: AlexNet  网络中第一个全连接层是这样的:

layer {
  name: "fc6"
  type: "InnerProduct"
  bottom: "pool5"
  top:"fc6"
  param {
    lr_mult: 1
    decay_mult: 1
  }
  param {
    lr_mult: 2
    decay_mult: 0
  }
  inner_product_param {
    num_output: 4096
    weight_filler {
      type: "gaussian"
      std: 0.005
    }
    bias_filler {
      type: "constant"
      value: 0.1
    }
  }
}

其中  bottom: "pool5"就是这个全连接层的输入,而top:"fc6"就是这个全连接层的输出。值得注意的地方是这个bottom: "pool5"是个“二维平面“式的数据,也就是N X M的数组样式,但是top:"fc6"确是一个K X 1或者 1 X K的向量,因此在实现中,程序会将bottom: "pool5"拉成N*M X 1或者1 X M*N的向量。

这个输入向量是什么呢?对,是特征图,符号化就是X(1)、X(2)、X(3)...X(N*M),括号内是X的下标。

那么输出呢?如果这个全连接层不是最后一个全连接层那么它也是特征图,符号化就是Y(1)、Y(2)、Y(3)...Y(K),括号内是Y的下标。

那么输入和输出是怎么联系到一块呢?答案就是W权重了,也叫滤波器,也叫卷积核。

那么在全连接层里怎么没看到这个滤波器的大小呢?答案是:不需要,因为它就是全连接啊。

一般情况下,输入神经元的个数不等于输出神经元的个数,那数目不等的输入输出神经元怎么连接起来呢?还有,这个滤波器(卷积核)是什么样呢?可以看看下面例子:

CNN中全连接层是什么样的?_第1张图片

其中(X1,X2,X3)就是输入神经元(特征图),而(Y1Y2)就是输出神经元(特征图),两层之间的连接就是卷积核:,想想矩阵相乘,就明白1X3的“矩阵”怎么变成1X2的矩阵了。

总的下来就是:CNN中全连接层是什么样的?_第2张图片

这个卷积核的形状是在代码中自动计算出来的。


你可能感兴趣的:(深度学习-实践)