21

bottom과 top blob을 동일하게 설정하면 Caffe에게 메모리 사용을 유지하기 위해 "적절한"계산을 수행 할 수 있습니다.Caffe에서 내부 레이어를 사용하는 경우는?

현재 내가 안전하게 "BatchNorm", "Scale""ReLU" 개의 레이어를 사용할 수 있음을 알고 있습니다 (잘못된 경우 알려주세요). 그것은 다른 레이어 (this issue 것 같다)에 대한 몇 가지 문제가있는 것 같습니다.

Caffe에서 내부 레이어를 사용하는 경우는 언제입니까?
역 전파와 함께 어떻게 작동합니까?

+0

현상금에 감사드립니다. 나는 그것이 당신을 위해 물건을 정리했으면 좋겠다. – Shai

+0

@Shai 답변 주셔서 감사합니다, 확실히 도움이됩니다! – dontloo

답변

9

잘 알려진 바와 같이, 내부 레이어는 일반적으로 "기본적으로"작동하지 않습니다.
일부 레이어의 경우 매우 간단합니다 ("ReLU" 및 기타 신경 활성화 레이어).
그러나 다른 경우에는 코드에서 특별한 처리가 필요합니다. 예를 들어, "PReLU" 계층의 구현에는 역 캐시에 필요한 정보를 저장하는 특정 캐시 bottom_memory_ 멤버 변수가 있습니다.
"적절한 위치"에서 레이어가 사용되는지 확인하기 위해 특별히 if (top[0] == bottom[0])을 테스트하는 다른 레이어에 대해 비슷한 코드를 볼 수 있습니다.

또한, 입력 및 출력이 때문에, 다른 모양 등 "Convolution", "InnerProduct" 같이 "Pool" "가 제자리"레이어의 후보로서 간주되지 않는 층이다있는에서 적절한 층을 거의 의미.

+0

감사. BatchNorm 레이어에서'in-place = True' 및'in-place = False'는 어떻습니까? 때로는 BatchNorm 레이어에 대해 문서를 'in-place = False'로 보았습니다. 이 사건에 어떤 이득이 있습니까? – user8264

+0

@ user8264 BatchNorm 레이어의 내부에 익숙하지 않아 정말 논평 할 수 없습니다. 때로는 제자리에서 사용하는 것이 더 많은 계산을 필요로합니다. (공간을 절약하기 위해) 당신은'in_place = False'를 지정한 사람에게 정말로 물어볼 필요가 있습니다 ... – Shai