강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của ingbeeeded7104
ingbeeeded7104

câu hỏi đã được viết

Từ khái niệm Vision Transformer công nghệ deep learning mới nhất đến triển khai Pytorch

ViT 모델 구현 코드에서 질문이 있습니다

Viết

·

721

0

안녕하세요 ViT 모델 구현에서 질문이 있습니다

1. 강의 중 출력 값이 커짐에 따라서 Softmax 때 문제가 발생해서 사용한다는 Scale에서 선생님 코드가 아래와 같이 되어 있습니다

self.scale = torch.sqrt(latent_vec_dim*torch.ones(1)).to(device)

그런데 강의자료를 보면 

head dimension으로 적용해야 하는 것이 아닌가 해서요

즉, self.scale = torch.sqrt(self.head_dim * torch.ones(1)).to(self.device)

확인해주시면 감사하겠습니다!

2. Transformer Encoder에서 MLP 구성할 때 FC층 2개와 GELU를 사용하는데, GELU는 왜 첫번째 FC에서만 Activation을 하고, 두번째 FC 출력 이후에는 생략하는 것인가요? 생략한다면 이유가 무엇이고, 훈련하는데 차이가 있을까요?

논문에서도 GELU 관련한 것은 "The MLP contains two layers with a GELU non-linearity" 문장만 있어서 조금 헷갈려서 질문을 드립니다

 

pytorch컴퓨터-비전딥러닝vision-transformer

Câu trả lời 2

1

dlbro님의 프로필 이미지
dlbro
Người chia sẻ kiến thức

안녕하세요. 유영재님!

좋은 질문입니다.

1. 맞습니다. 오타입니다 ㅠㅠ 지적 감사드립니다.

2. 활성화 함수 종류나 적용 위치는 경험 기반으로 세팅을 한 것으로 보입니다. 참고로 원래 트랜스포머는 ReLU를 사용하였습니다.

 

감사합니다.

0

ingbeeeded7104님의 프로필 이미지
ingbeeeded7104
Người đặt câu hỏi

강의 자료에 나와있는 수식은 Multi-Head가 아닌 Single-Head의 경우를 표현한 것으로 알면 될까요? 그런데 코드에서는 Multi-head 계산 후 permute으로 다시 num*heads, head_dim 4차원으로 나눠주는데 그러면 scale은 Dh로 적용해야되는 것이 아닌가요?

 

Hình ảnh hồ sơ của ingbeeeded7104
ingbeeeded7104

câu hỏi đã được viết

Đặt câu hỏi