강의

멘토링

커뮤니티

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

patchdata.py에서 make_weights 함수 질문이 있습니다

Viết

·

231

0

안녕하세요

구현 부분 보고 있는데, 궁금한 점이 있습니다

1. make_weights 함수를 구할 때 클래스 갯수만큼 반복문을 통해서 단순하게 1/카운팅 갯수로 하는데,

저는 데이터셋 전체 갯수를 고려해서 넣어줘야 되지 않나도 생각이 들어서요. (둘 모두 클래스 많고 적음은 표현이 될 것 같긴 합니다. 다만 후자가 좀 더 정확하지 않을까 해서요)

2. 또 드는 생각이 Pytorch API에서 저렇게 계산해서 넣어줘야만 되는건지 궁금합니다

3. 그리고 직접 구하는 것이 아닌 Pytorch에서 충분히 내부적으로 처리해줄 수 있을 것 같은데, 그건 또 아니네요

감사합니다

 

vision-transformerpytorch딥러닝컴퓨터-비전

Câu trả lời 2

1

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

안녕하세요. 유영재님!

 

현재 가지고 오신 외부 코드의 메카니즘은 우리 코드와 동일합니다.

우리 코드에서 make_weights에 해당하는 부분이 외부코드의 class_count 와 class_weights 이구요.

이 부분도 작성자가 for문을 이용한 것이구요. 가중치를 구하는 부분은 저자마다 다를 수 있는데 데이터셋 전체 개수도 고려해서 계산할 수도 있지만 클래스당 데이터 개수로만 계산이 가능하기도 합니다. 여기서는 후자를 택한 것이구요.

make_weights를 보시면 각 클래스의 가중 확률의 합이 항상 1입니다. 즉, 모든 클래스의 가중 확률의 합이 1이 되고 이는 클래스를 하나의 변수로 봤을 때 뽑을 확률이 같음을 의미합니다. 사실 모든 클래스의 가중 확률의 합의 합이 1이 되는 것이 수학적으로 이상적일 수 있으나 전체 확률이 1에 되지 않더라도 샘플링에는 문제가 없습니다. 그리고 말씀 하신대로 라벨 순서를 유지 시켜줘야 합니다. 이 부분은 오류가 있네요. 수정할께요!

 

질문 감사드립니다!

 

0

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

또 궁금한 점이

아래는 구글 어느 한 블로그를 퍼온건데, 제 생각과 동일한 부분이 있기는 합니다

클래스에 따른 가중치를 구한 다음에 이를 전체 Label에 적용할 때 Label에 대한 순서를 유지해줘야 되지 않나요?

현재 코드는 해당 리스트만큼 구해서 바로 extend 시키는 코드인 것 같아서요

 

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

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

Đặt câu hỏi