인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

dongun9268님의 프로필 이미지

작성한 질문수

딥러닝 CNN 완벽 가이드 - Pytorch 버전

풀링(Pooling)

Conv Stride를 늘렸을 때 연산이 늘어나는 이유가 무엇인가요?

작성

·

65

0

안녕하세요 강의 정말 정말 잘 듣고 있습니다.!

궁금한 점이 하나 있어 질문 남깁니다.

섹션 8. CNN이해의 Pooling 강의에 8분 50초를 보면 Conv적용 시 Stride를 늘릴 경우 연산이 늘어난다고 언급하셨는데, 저는

Stride가 늘어나면 이동폭이 늘어나고 그에 따라 output feature map 크기 또한 줄어들기 때문에 연산량은 줄어드는 것으로 생각했습니다.

제가 이해했던 부분이랑 차이가 있어서 질문 남깁니다.

질 좋은 강의 정말 정말 감사드립니다. 항상 잘 챙겨보고있습니다.!

답변 2

1

권 철민님의 프로필 이미지
권 철민
지식공유자

안녕하십니까,

잘 듣고 계시다니 저도 기쁘군요 ^^

Stride를 늘려서 연산이 더 늘어난다는 의미는 Stride 2 Pooling(을 하는 것 보다는 Conv -> Stride 2가 좀 더 연산량이 늘어난다는 의미입니다. 아무래도 Pooling에서 사용되는 Max 연산 보다는 Conv 연산이 더 연산량이 늘어나기(상대적으로 연산이 복잡해서) 때문에 그렇다는 의미 입니다. Conv 연산시에 Stride 1 보다 Stride 2가 연산이 늘어난다는 의미가 아닙니다(말씀하신대로 동일 Conv 연산시에는 Stride 2가 더 연산량이 줄어듭니다)

해당 부분의 강의 영상 주제가 Pooling과 Stride 적용의 주요 차이점 이오니 해당 관점으로 생각해 주시면 좋을 것 같습니다.

감사합니다.

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. dongun9268님,

Stride 값이 증가하면 실제로 output feature map의 크기는 줄어들지만, 여기서 주의할 점은 연산의 “복잡성”에 주목해야 한다는 것입니다. Conv2D 연산에서 스트라이드가 늘어나면 각 필터가 겹치지 않고 더 넓은 영역을 한 번에 처리하게 됩니다. 그러나 스트라이드를 늘리는 것이 항상 연산량 자체를 줄여주는 것은 아닙니다.

예를 들어, stride의 길이를 늘리면 필터의 이동 간격이 넓어지지만, 이런 상황에서 정보가 손실될 수 있기 때문에 그 동안 손실을 보정하거나 다른 방식으로 정보를 더 많이 추출하기 위해 추가적인 연산이 필요할 수 있습니다. 이에 따라, stride 값이 커졌을 때 어떤 맥락에서 연산이 늘어난다고 할 수 있는지를 염두에 두고 고민해보시면 좋을 것 같습니다.

관련된 기존 질문과 답변을 참고하시면 더 깊은 이해가 도움이 될 수 있습니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.