CAFFE:Inner_Product层

在caffe中所谓的Inner_Product(IP) 层即fully_connected (fc)layer,为什么叫ip呢,可能是为了看起来比较优雅吧。。

从CAFFE_ROOT/examples/mnist/lenet.prototxt中截取一段

假设conv2的输入是256*27*27,那么conv2的输出即50*22*22,conv2的输入即pool2的输入,pool2的输出为50*11*11,即ip1的输入

ip1的输出为500*1*1,那么pool2->ip1的参数个数是多少呢?这里就要理解好什么是fully_connected了,即wTx,x为列向量,w的长度与x相同。

在本文的例子中x的维度为50*11*11,那么pool2->ip1的参数个数为500*50*11*11 。50*11*11即是一个有50个通道大小为11*11的图片,那么在做

完全卷积的时候,需要把对所有通道一起作卷积,即把图片转化成一个50*11*11的向量(理解这一点非常重要

layers {
  name: "conv2"
  type: CONVOLUTION
  bottom: "pool1"
  top: "conv2"
  blobs_lr: 1
  blobs_lr: 2
  convolution_param {
    num_output: 50
    kernel_size: 5
    stride: 1
    weight_filler {
      type: "xavier"
    }
    bias_filler {
      type: "constant"
    }
  }
}
layers {
  name: "pool2"
  type: POOLING
  bottom: "conv2"
  top: "pool2"
  pooling_param {
    pool: MAX
    kernel_size: 2
    stride: 2
  }
}
layers {
  name: "ip1"
  type: INNER_PRODUCT
  bottom: "pool2"
  top: "ip1"
  blobs_lr: 1
  blobs_lr: 2
  inner_product_param {
    num_output: 500
    weight_filler {
      type: "xavier"
    }
    bias_filler {
      type: "constant"
    }
  }
}

 

posted @ 2015-03-03 23:22  dupuleng  阅读(17478)  评论(1编辑  收藏  举报