3

我有一个5D blob像1x8x128x128,我有一个能够处理我的5D blob的卷积层。当我想使用一个池层,尽管它不起作用。你如何使用带有5D blob的pool-layercaffe:5D斑点池?

检查失败:4 ==底部[0] - > num_axes()(4与5)输入必须有4个 轴,对应于(NUM,信道,高度,宽度)

我认为它只是不被caffe支持。我可以只使用卷积层并执行pooling

+0

你可以(1)为咖啡实现ND池层。或者(2)如果只汇集前2个空间维度,则可以重塑为4D,共享池并重新变形为5D – Shai

+0

好吧,如何省略维度,然后再次重新整形并再次添加一个维度?我知道如何添加维度,但我不知道如何省略维度。 @Shai – thigi

+0

另一种选择是在卷积层中设置“stride = 2”,而不是跟随一个池层,以实现二次采样。 – Dale

回答

3

如果你想集中只有前两个空间维度,可以"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. 
} 

见定义ReshapeParametercaffe.proto有关更多详情。

+0

我的尺寸不是暂时但适当的3D切片,但不应有所作为。我正在考虑将2D图像以4D blob的形式提供给网络,并且在最后谈到丢失时,我会将我的4D blob重塑为5D blob,并且如果这是偶数,则使用'Softmax'作为5D blob可能。但我也会在这里尝试这个答案!谢谢! @Shai – thigi