3

나는 1x8x128x128과 같은 5D BLOB를 가지고 있으며, 5D BLOB를 처리 할 수있는 Convolution 레이어가 있습니다. 풀 레이어를 사용하고 싶지만 작동하지 않습니다. 을 5D BLOB와 어떻게 사용합니까?caffe : 5D blobs pooling?

확인에 실패 4 == 하단 [0] -> num_axes() (4 대 5) 입력 (NUM, 채널 높이, 폭)

에 대응하는 4 축 있어야

나는 그것이 아직 caffe에 의해 지원되지 않는다고 생각한다. 난 그냥 convolution 레이어를 사용하여 pooling 할 수 있을까요?

+0

(1) caffe에 대해 ND 풀링 레이어를 구현할 수 있습니다. 또는 (2) 처음 2 개의 공간 치수 만 모으는 경우 4D로 다시 형성하고 풀을 풀어 5D – Shai

+0

으로 다시 바꿀 수 있습니다. 그리고 치수를 생략 한 다음 다시 모양을 바꾸고 다시 한 치수를 추가합니까? 차원을 추가하는 방법을 알고 있지만 차원을 생략하는 방법을 모르겠습니다. @Shai – thigi

+0

또 다른 선택은 서브 샘플링을 실현하기 위해 풀링 레이어가 뒤 따르지 않고 회선 레이어에'stride = 2'를 설정하는 것입니다. – Dale

답변

3

만 처음 두 개의 공간 차원을 풀로 할 경우, 수, 수영장 및 5D 뒤쪽 "Reshape" (채널 및 시간 기준 "부수") 내지 4D "Reshape" :

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 조각이 아니지만 차이를 만들어서는 안됩니다. 나는 4D blob의 형태로 그물 2 차원 이미지를주고 생각하고 있었고 결국 손실에 관해서는 4D BLOB를 5D BLOB로 바꿀 것이고 5D BLOB에 Softmax를 사용한다. 가능한. 그러나 나는이 대답을 여기에서도 시도 할 것이다! 감사! @Shai – thigi