텀 프로젝트 하는데 이거 생각 할 때마다 완성 못할 것 같다는 생각이 너무 두려워서
부들부들 떨리고 속이 울렁거려서 밥을 못먹고 있습니다.
다름이 아니라 제가 데이터셋이 부족한 이미지를 pytorch 로 feature를 추출하고
scikit-learn에 있는 랜덤 포레스트나 부스트 같은 앙상블 모델로 이미지 분류를 할려구 하는데요
기본적인 모델은 few-shot learning에 사용되는 모델을 사용하고 있습니다.
그런데 scikit-learn에 있는 앙상블 모델을 pytorch모델과 어떻게 섞어 써야 할 지 모르겠습니다.
scikit-learn 문서에 나와있는 모델 보니까 아예 scikit-learn api에 존재하는 모델을
.fit(image, tag) 이런식으로 트레이닝 시키고
.predict(test_data) 이렇게 분류 하던데
파이토치로 구현한 cnn에서 나온 feature 혹은 이 feature를 fully connected layer에 넣어서 나온 logit이나 확률 분포를
loss 함수에 넣어서 나온 결과를 역전파 해야지 레이어의 웨이트가 조정 되잖아요
그런데 이걸 scikit-learn에 있는 문서에 나와있는 api와 같이 쓰는 방법을 모르겠습니다;;
애초에 앙상블 러닝이라는게 training phase에서 쓰는게 아니라 test phase에서 쓰는것 같은데 맞나요...?
test phase에서 쓰더라도 이걸 쓰려면 결국 앙상블 모델을 트레이닝 해야하는데 이러면 cnn을 훈련한 이유가 없지 않나요...?
흑흑 정말 어떻게 해야 할까요 이것 때문에 매일 입이 바짝 바짝 마르고 밥도 못먹고 잠도 못자고 있습니다ㅠ
이러다 탈모 걸릴것 같아요ㅠ_ㅠ
그나마 생각중인게 cnn에서 추출한 피처와 태그로 scikit-learn에 있는 모델 학습 시킨뒤 확률 분포 구하고
그리고 별도로 fully connected layer에서 나온 결과로 확률 분포 구한다음에
hard-voting이나 soft-voting하는 방법 생각해봤는데 이게 최선일까요?
이렇게 하면 대략적인 모델은 CNN -> feature 추출 -> CNN -> FC 이거랑
동일한 웨이트를 사용하는 CNN -> fature 추출 -> random forest
이렇게 한뒤 나중에 정확도 구할 때 fc의 결과와 random forest 보팅해서 하면 될까요?
흑흑 심장이 콩딱콩딱 뛰어요ㅠ_ㅠ
댓글 0