2016-08-10 4 views
1

단일 패치 점수를 기반으로 한 분류 기준을 사용하기 때문에 네트워크가 서로 다른 이미지에 대해 내놓은 예측을 종합 해보고자합니다. https://github.com/BVLC/caffe/blob/master/src/caffe/proto/caffe.proto에서Caffe, batch 사이의 작업

, 감소는 마지막 하나는 다른 축에서 동작을 지원하지 않습니다. 또한 풀링 작업은 입력의 평균을 생성하지만 전체 배치를 만지지 않고도 분명히 입력을 생성합니다.

파이썬 레이어를 구현했지만 대규모 실험에는 충분히 빠르지 않습니다.

이미 사용 가능한 도구로 첫 번째 축을 "합치거나"더 일반적인 방법이 있습니까?

답변

1

예. 할 수있어. N x p x q x r 블롭의 예측이있는 경우 처음에는 Slice (SliceLayer)을 사용하여 모양이 각각 1 x p x q x rN 개를 만듭니다. 그런 다음 eltwise (EltwiseLayer) 레이어에 대해 N 얼룩을 N 바닥으로 사용하여 단일 상단을 만듭니다. 당신의 예측이 치수가있는 경우

+0

하지만 내 경우에는 문제가 SliceLayer''이다 일괄 처리와 같은 상위 블롭을 필요로합니다 (잘못된 것이 아니라면). 10000 개의 톱풀이 필요할 것이므로 다른 솔루션을 찾으려고했습니다. –

+0

.prototxt가 복잡해 지거나 실행 시간이 염려 되니 걱정하지 않으시겠습니까? 그것의 후자 (시간), 그때 당신은 슬라이스 레이어와없이, 그것을 시간 수 있습니다. prototxt 작성과 관련하여 일반적으로 파이썬 코드를 사용하여 prototxt ([this] (https://github.com/XiaozhiChen/resnet-generator/blob/master/resnet_generator.py) 코드에서 영감을 얻음)를 작성합니다. 따라서 100 개의 위쪽 얼룩을 정말 쉽게 쓸 수 있습니다. 그렇지 않으면 기존 레이어를 사용하는 다른 방법이 표시되지 않습니다. 물론 슬라이스와 엘트 와이즈를 조합 한 자신 만의 레이어를 작성할 수 있습니다. –

+0

이 답변을 주셔서 감사합니다. 나는 시간에 대해 더 염려한다. 나는 그것을 시도하고 얼마나 많이 걸리는지 보게 될 것이다. –

1

: N x c (Nc 채널의 미니 배치 크기)를, 당신은 차원 Nc 모양이 점을 스플 라이스 수 있습니다. 이를 Reduction 레이어에 넣을 수 있습니다.

layer { 
    name: "pred-slice" 
    type: "Slice" 
    bottom: "pred" 
{%- for num in range(10) %} 
    top: "pred-{{ num }}-vector" 
{%- endfor %} 
    slice_param { 
    slice_dim: 1 
{%- for num in range(1, 10) %} 
    slice_point: {{ num }} 
{%- endfor %} 
    } 
    include { 
    phase: TEST 
    } 
} 

{%- for num in range(10) %} 
layer { 
    name: "pred-{{num}}" 
    type: "Reduction" 
    bottom: "pred-{{ num }}-vector" 
    top: "pred-{{ num }}" 
    include { 
    phase: TEST 
    } 
    reduction_param { 
    operation: MEAN 
    } 
} 
{%- endfor %} 

에 확장 :

예를 들어, 당신은 A Jinja2 템플릿으로 다음 쓰기 나는 이것에 대해 생각

layer { 
    name: "pred-slice" 
    type: "Slice" 
    bottom: "pred" 
    top: "pred-0-vector" 
    top: "pred-1-vector" 
    top: "pred-2-vector" 
    top: "pred-3-vector" 
    top: "pred-4-vector" 
    top: "pred-5-vector" 
    top: "pred-6-vector" 
    top: "pred-7-vector" 
    top: "pred-8-vector" 
    top: "pred-9-vector" 
    slice_param { 
    slice_dim: 1 
    slice_point: 1 
    slice_point: 2 
    slice_point: 3 
    slice_point: 4 
    slice_point: 5 
    slice_point: 6 
    slice_point: 7 
    slice_point: 8 
    slice_point: 9 
    } 
    include { 
    phase: TEST 
    } 
} 
layer { 
    name: "pred-0" 
    type: "Reduction" 
    bottom: "pred-0-vector" 
    top: "pred-0" 
    include { 
    phase: TEST 
    } 
    reduction_param { 
    operation: MEAN 
    } 
} 
layer { 
    name: "pred-1" 
    type: "Reduction" 
    bottom: "pred-1-vector" 
    top: "pred-1" 
    include { 
    phase: TEST 
    } 
    reduction_param { 
    operation: MEAN 
    } 
} 
layer { 
    name: "pred-2" 
    type: "Reduction" 
    bottom: "pred-2-vector" 
    top: "pred-2" 
    include { 
    phase: TEST 
    } 
    reduction_param { 
    operation: MEAN 
    } 
} 
layer { 
    name: "pred-3" 
    type: "Reduction" 
    bottom: "pred-3-vector" 
    top: "pred-3" 
    include { 
    phase: TEST 
    } 
    reduction_param { 
    operation: MEAN 
    } 
} 
layer { 
    name: "pred-4" 
    type: "Reduction" 
    bottom: "pred-4-vector" 
    top: "pred-4" 
    include { 
    phase: TEST 
    } 
    reduction_param { 
    operation: MEAN 
    } 
} 
layer { 
    name: "pred-5" 
    type: "Reduction" 
    bottom: "pred-5-vector" 
    top: "pred-5" 
    include { 
    phase: TEST 
    } 
    reduction_param { 
    operation: MEAN 
    } 
} 
layer { 
    name: "pred-6" 
    type: "Reduction" 
    bottom: "pred-6-vector" 
    top: "pred-6" 
    include { 
    phase: TEST 
    } 
    reduction_param { 
    operation: MEAN 
    } 
} 
layer { 
    name: "pred-7" 
    type: "Reduction" 
    bottom: "pred-7-vector" 
    top: "pred-7" 
    include { 
    phase: TEST 
    } 
    reduction_param { 
    operation: MEAN 
    } 
} 
layer { 
    name: "pred-8" 
    type: "Reduction" 
    bottom: "pred-8-vector" 
    top: "pred-8" 
    include { 
    phase: TEST 
    } 
    reduction_param { 
    operation: MEAN 
    } 
} 
layer { 
    name: "pred-9" 
    type: "Reduction" 
    bottom: "pred-9-vector" 
    top: "pred-9" 
    include { 
    phase: TEST 
    } 
    reduction_param { 
    operation: MEAN 
    } 
}