작성
·
238
0
강사님께서 코드를 보면서 '전체 데이터를 가지고 예측을 했기 때문에 굳이 미니배치 기반으로 예측을 안해도 된다' 고 언급하신 부분이 이해가 잘 가지 않습니다.
(9분 ~ 9분 20초 경)
저희가 훈련 데이터로 모델을 학습할 때
미니배치 기준으로 학습을 했으니까 예측을 할 때에도 미니배치 기준으로 해야하지 않나요?
강의 내에서 아래 코드를 굳이 안해도 된다고 언급
09_SIMPLE_ACTUAL_EXAMPLE_MULTI-LABEL_CLASSIFICATION.ipynb
y_pred_list = list()
x_test_batch_list = X_test_tensor.split(minibatch_size, 0)
model.eval()
with torch.no_grad():
for x_minibatch in x_test_batch_list:
y_test_pred = model(x_minibatch)
y_test_pred = torch.argmax(y_test_pred, dim=1)
y_pred_list.extend(y_test_pred.detach().tolist())
y_pred_list = torch.tensor(y_pred_list)
답변 1
0
안녕하세요. 답변도우미입니다.
해당 코드는 미니배치를 기반으로 실행할 수 있는 코드이지만, 실제 데이터는 미니 배치로 분리하지 않고, 전체 데이터를 가지고 학습을 하였습니다. X_train_tensor.size(0) 이 부분이 전체 데이터 사이즈를 나타내는 부분이니까요. 여러 개로 분리한 것이 아니라 전체 데이터로 한번에 학습을 시킨 것이라서요.
indices = torch.randperm(X_train_tensor.size(0))
그래서, 예측시에도 미니 배치 관련 코드를 추가로 넣을 필요는 없지만, 기존 코드를 그대로 최대한 활용한다는 측면에서 미니 배치 코드를 기반으로, 전체 테스트 데이터에 대해 예측을 했다는 의미입니다. 보다 정석적으로 한다면, 전체 데이터 로 학습했을 때의 그 사이즈만큼으로 테스트를 하면 더 맞겠지만, 테스트 데이터가 그만큼은 안되고, 이렇게 해도 적절히 예측을 하여서, 크게 이슈는 없어서, 이와 같이 진행하였습니다.
감사합니다.