inflearn logo
강의

Course

Instructor

Deep Learning and PyTorch Bootcamp for Beginners (Easy! From Basics to ChatGPT's Core Transformer) [Data Analysis/Science Part 3]

Writing Deep Learning Model Test Code for Validation

test data 의 loss 계산식 문의

285

hyeoncheolkim0765

7 asked

0

10_ADVANCE-EXAMPLE-MILTI-LABEL-CLASSIFICATION 과 11_MILTI-LABEL-CLASSIFICATION-DROPOUT-BATCHNORMALIZATION 강의자료에서 맨 밑부분의 테스트셋 기반 Evaluation 에서 test_loss 를 계산할 때 전체 데이터인 10000으로 나누셨는데, 왜 그러신건지 궁금해서 질문드립니다.

train 과 validation 의 loss 계산은 train_batches 와 val_batches 개수(for문 도는 횟수) 만큼만 나누셨는데 test loss 를 계산할 때는 minibatch 가 아닌 전체 데이터로 나누셔서 상대적으로 test data 의 loss 값이 작아보여서요.


test_loss = 0

correct = 0

wrong_samples, wrong_preds, actual_preds = list(), list(), list()

model.eval()

with torch.no_grad():

for x_minibatch, y_minibatch in test_batches:

y_test_pred = model(x_minibatch.view(x_minibatch.size(0), -1))

test_loss += loss_func(y_test_pred, y_minibatch)

pred = torch.argmax(y_test_pred, dim=1)

correct += pred.eq(y_minibatch).sum().item()

wrong_idx = pred.ne(y_minibatch).nonzero()[:, 0].numpy().tolist()

for index in wrong_idx:

wrong_samples.append(x_minibatch[index])

wrong_preds.append(pred[index])

actual_preds.append(y_minibatch[index])

test_loss /= len(test_batches.dataset)

머신러닝 딥러닝 인공신경망 pytorch vision-transformer

Answer 1

0

funcoding

안녕하세요. 답변 도우미입니다.

이 질문에 대한 답변은 평가 방법의 일관성과 정확도 측정 방식의 차이에서 기인합니다. 학습, 검증, 테스트 단계에서 손실(Loss)을 계산하는 방법은 각 목적에 맞게 조정될 수 있습니다. 보통 학습과 검증 단계에서는 배치(batch) 단위로 손실을 계산하고, 이를 배치의 개수로 나누어 평균 손실을 구합니다. 이렇게 함으로써 각 배치의 크기가 일정하지 않더라도 전체적인 손실 추이를 안정적으로 측정할 수 있습니다.

반면, 테스트 단계에서는 전체 데이터셋을 대상으로 모델의 성능을 평가하고자 하는 경우가 많습니다. 테스트 데이터셋의 전체 크기로 손실을 나누는 것은 모델이 전체 테스트 데이터셋에 대해 얼마나 잘 작동하는지를 보여주는 것을 목적으로 합니다. 여기서 전체 데이터셋 크기로 나누는 이유는 테스트 데이터셋의 각 샘플이 모델 평가에 미치는 영향을 균등하게 반영하기 위함입니다.

이 방식은 테스트 데이터셋에 대한 손실을 일종의 "평균 손실"로 해석할 수 있게 하며, 모델이 실제로 배포되었을 때 예상할 수 있는 평균 성능을 추정하는 데 도움을 줍니다. 따라서 테스트 단계에서 전체 데이터셋으로 나누는 것은 모델의 일반화 성능을 정확하게 평가하기 위해 중요합니다.

단, 이러한 방식으로 계산된 테스트 손실이 상대적으로 작게 나타나는 것은, 평균을 내는 데이터의 양이 많기 때문에 발생할 수 있습니다. 각 배치의 손실을 모두 더한 후 전체 테스트 데이터셋의 크기로 나눔으로써, 모든 테스트 샘플에 대한 평균 손실을 계산하는 것입니다. 이는 특히 큰 데이터셋을 다룰 때 더욱 의미있는 평가 방법이 될 수 있습니다.

감사합니다.

잔재미코딩 드림.

강의 필기는 어떻게 하나요?

0

82

1

섹션 5퀴즈 4번 문제 보기 오류로 보임

0

62

1

섹션17 81번이랑 82번 강의가 중복되는 것 같아서 질문드립니다.

0

87

2

강의교안이 안 옵니다

0

78

1

17-2강 Transfer learning 실습 관련 질문

0

134

2

13섹션 강의자료가 없네요^^

0

91

1

강의자료가 없네요.

0

103

2

LSTM 모델 학습 관련한 질문입니다.

0

127

1

MSE LOSS 관련

0

129

1

test시 minibatch 사용?

0

133

1

Average Test loss 계산식 문의

0

101

1

파이토치 설치

0

244

1

[Pytorch 기울기의 누적 곱? 누적 합?]

0

131

1

3d 텐서에서의 축 구분 질문

0

118

1

항상 tensor([0., 0., 0.]) 형식으로만 나오는 이유

0

110

1

강의자료 PDF 다운로드에 관하여

0

130

1

[실무에서 판다스 copy()메서드의 깊은복사 얕은복사 조정 소요가 생길까?]

0

116

1

섹션 다양한 Optimizer 정리하기 중 딥러닝으로 Regression 문제 적용해보기 (House Price Kaggle 문제) 강의에서 오류가 발생합니다.

0

148

1

마지막에 confusion matrix 작성할때

0

157

1

아나콘다를 사용하지 않고 파이토치 사용하는 방법

0

849

1

차원 출력 관련 문의

0

242

1

섹션 7-4 당뇨병

0

383

3

BackPropagation 질문입니다

0

372

1

RMSProp 관련 질문입니다.

0

173

1