Caffe:5D Blob池化?

3

我有一个5D的blob,类似于1x8x128x128,我有一个卷积层可以处理这个5D blob。但是当我想使用池化层时,它就不能正常工作了。怎么才能在一个5D的blob上使用pooling层呢?

检查失败:4 == bottom[0]->num_axes() (4 vs. 5) 输入必须有4维,对应于(num, channels, height, width)

我认为Caffe还没有支持这个功能。我能否只使用卷积层并进行池化处理呢?


好的,那么如何省略一个维度,然后再次进行重塑并添加一个维度呢?我知道如何添加一个维度,但我不知道如何省略一个维度。@Shai - user4911648
@thigi 顺便问一下,你考虑在 BVLC\caffe 的 Github 上提出请求了吗? - Shai
你看过这个链接吗:pull request?我认为这应该足够了,或者你认为我应该发起一个请求吗?@Shai - user4911648
1
@Shai 同意您的观点。 - Dale
@thigi 我不确定这个拉取请求是否涉及ND池化,它只改变了cuDNN的支持。你需要仔细看一下。 - Shai
显示剩余5条评论
1个回答

2

如果你只想汇集前两个空间维度,可以通过"Reshape"到4D("压缩"通道和时间维度),进行汇集,然后再通过"Reshape"回到5D:

layer {
  name: "pool/reshape4D"
  type: "Reshape"
  bottom: "in"
  top: "pool/reshape4D"
  reshape_param { axis: 1 num_axes: 1 shape { dim: -1 } }
}
layer {
  name: "pool"
  type: "Pooling"
  bottom: "pool/reshape4D"
  top: "pool"
  # pooling params here...
}
layer {
  name: "pool/reshape5D"
  type: "Reshape"
  bottom: "pool"
  top: "pool/reshape5D"
  reshape_param { axis: 1 num_axes: 1 shape { dim: -1 dim: <temporal_dim> } } # replace <.> with the actual temporal dimension size.
}

有关详细信息,请参见caffe.protoReshapeParameter的定义。


我的维度不是时间上的,而是适当的三维切片,但这应该没有影响。我想以4D blob的形式给网络提供我的2D图像,在损失函数结束时,我将把我的4D blob重塑为5D blob,并对5D blob使用Softmax,如果可能的话。但我也会在这里尝试这个答案!谢谢!@Shai - user4911648

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接