해결된 질문
작성
·
478
·
수정됨
답변 1
0
안녕하세요.
좋은 질문입니다 :)
fc1 이 전 풀링 레이어 pool2까지 거친 피쳐맵의 크기가 16x5x5 입니다. 즉, 5x5 피쳐맵이 16개 있다는 의미이고 이 것을 일렬로 폈기 때문에 fc1의 입력 노드가 16x5x5개 됩니다! 즉, 모델을 구축하기 위해서 마지막 피쳐맵의 크기를 미리 알고 계셔야 합니다.
감사합니다.
공식 사용하셔도 됩니다! 다만 모델 구조와 이미지 크기에 따라 공식의 분수 계산 부분에서 나누어 떨어지지 않는 경우가 여러 번 나오게 되면 최종 값이 맞지 않아 오류가 발생할 가능성이 있습니다. 그래서 이 부분을 신경 쓰고 싶지 않으면 일렬로 피는 대신에 각 채널의 피쳐맵 평균을 사용하는 global average pooling도 많이 사용합니다. 즉, 이 경우에는 어떠한 이미지 사이즈가 들어와도 무조건 fc1의 입력 노드가 직전 채널 수가 됩니다!! (즉, fc1=nn.Linear(16, 120))
답변감사합니다! 그럼 선생님께서는 아래와 같이 피쳐맵의 크기를 계산하는 공식을 매번 적용하시면서 코드를 작성하셨던 걸까요?? 공식을 일일히 적용하지 않고 계산하는 함수?또는 코드가 있는지도 궁금합니다!
OutputHeight=OH=(H+2P−FH)S+1O
OutputWeight=OW=(W+2P−FW)S+1