궁금증: mPLUG-2 논문을 보니 concat이라는 부분이 있었는데 깃허브 코드를 확인해보았을때는 concat의 부분이 보이지 않음.
찾아보니 Conv3d에서 인자값으로 group이 존재.
1. group 기능 : Grouped Convolution 은 입력 값 채널과 출력 채널을 여러 개의 그룹(Group인자값) 으로 나누어 독립적으로 Convolution 연산을 수행하는 방식.
ex) 입력 채널 수 : 4 ,출력 채널 수 : 8 ,groups : 2
conv = nn.Conv2d(in_channels=4, out_channels=8, kernel_size=3, groups=2)
-> 입력 채널을 2개의 그룹으로 나누고
-> 출력 채널도 2개의 그룹으로 나눠서,
-> 각 그룹끼리만 연결되도록 Conv연산을 수행함.
🧠 실제 동작 방식
- 입력 채널: [0, 1] (Group 1), [2, 3] (Group 2)
- 출력 채널: [0~3] (Group 1), [4~7] (Group 2)
- Group 1:
- 입력 채널 0, 1 → 출력 채널 0~3
- 필터 4개가 2채널 입력만 보고 학습함
- Group 2:
- 입력 채널 2, 3 → 출력 채널 4~7
- 역시 필터 4개가 2채널 입력만 보고 학습
- 최종적으로 각 그룹에서 나온 출력 채널을 concat함 ( 쪼개진 입력차원에 대한 정보(차원크기)를 복원 하기 위해)
기타 (딥러닝에 사용되는 다양한 Convolution 기법) : https://eehoeskrap.tistory.com/431#8.-grouped-convolution
'인공지능 (기본 딥러닝) > 딥러닝 및 파이토치 기타 정리' 카테고리의 다른 글
[Pytorch, Huggingface] Pretrained Model 의 특정 Layer 만 추출 (1) | 2024.04.26 |
---|---|
[Huggingface] 가중치 없이 모델 로드 및 모델 구조 변경 (0) | 2024.04.23 |
[파이썬 디버거] import pdb;pdb.set_trace() (0) | 2023.12.27 |
[형변환] Tensor to Numpy / Numpy to Tensor (1) | 2023.12.23 |
[1차원 추가 및 제거] Pytorch squeeze / unsqueeze (2) | 2023.12.23 |