학습이 잘된 몇가지 모델이 있고, 각각의 모델의 성능을 결합하여 최선의 결과를 얻고 싶을 때 모델 앙상블을 이용한다.
예시)
잘 학습된 가중치를 포함한 모델 1~3이 있다고 하자.
모델을 통해 추론한 결과는 (5000, 26) 사이즈를 갖는다고 가정해 보자.
모델 3개를 통해 추론한 결과를 앙상블 하는 과정은 다음과 같이 정리할 수 있다.
코드로 나타내면 다음과 같다.
for model in best_models:
(...)
for idx, sample in enumerate(test_data_loader):
with torch.no_grad():
(...)
probs = model_bone(images)
preds = (probs > 0.5)
batch_idx = batch_size * idx
# images.shape[0] 는 64. 즉, 배치 만큼만 채워 넣는다.
prediction_array[batch_idx: batch_idx + images.shape[0], :] = preds.astype(int)
predictions_list.append(prediction_array[..., np.newaxis])
# axis = 2를 기준으로 평균
predictions_array = np.concatenate(predictions_list, axis = 2)
predictions_mean = predictions_array.mean(axis = 2)
# 평균 값이 0.5보다 클 경우 1 작으면 0
predictions_mean = (predictions_mean > 0.5) * 1
앙상블을 잘만 활용해도 성능이 5% 이상은 높아질 수 있다.
-End-
반응형
'데이터 과학 > 딥러닝 FrameWork' 카테고리의 다른 글
torch_scatter 설치 (0) | 2022.12.16 |
---|---|
RNN & LSTM 설명 및 구현(pytorch) (0) | 2021.03.29 |
Trouble Shooting (0) | 2021.01.31 |
Torch 데이터셋 & 데이터 로더 + Transforms (0) | 2021.01.30 |
Torch 연산 (0) | 2021.01.29 |