You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
test_outputs = test_outputs.to(device=device, dtype=torch.int64)
with torch.no_grad():
y_val = model(categorical_test_data)
loss = loss_function(y_val, test_outputs)
print(f'Loss: {loss:8f}')
여기서 y_val = model(categorical_test_data) 부분에 device 지정을 해줘야 하지 않나요( y_val = model(categorical_test_data).to(device))
앞서 train 단계에서 지정된 device가 test에서 사용된 device와 달라 오류가 발생합니다
RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cpu and cuda:0! (when checking argument for argument target in method wrapper_CUDA_nll_loss_forward)
또한 train 과정에서는 model에 device 지정한 부분이 존재합니다.
epochs = 500
aggregated_losses = []
train_outputs = train_outputs.to(device=device, dtype=torch.int64)
for i in range(epochs):
i += 1
y_pred = model(categorical_train_data).to(device) ## 해당 부분
single_loss = loss_function(y_pred, train_outputs)
aggregated_losses.append(single_loss)
책 정말 잘 공부하고 있습니다.
좋은 책 집필 감사합니다.
The text was updated successfully, but these errors were encountered:
추가로 문의 드립니다.
책에서 아래와 같이 코드가 작성되어있는데
y_val = np.argmax(y_val, axis=1)
print(y_val[:5])
앞서 코드에서 tensor로 연산했기 때문에 np.argmax를 사용하면 아래와 같은 오류가 발생합니다.
TypeError: can't convert cuda:0 device type tensor to numpy. Use Tensor.cpu() to copy the tensor to host memory first.
이에 tensor를 numpy 배열로 변경하는 과정이 필요할 것 같습니다.
이후 평가 매트릭스에서도
from sklearn.metrics import classification_report, confusion_matrix, accuracy_score
print(confusion_matrix(test_outputs.cpu().numpy(), y_val))
print(classification_report(test_outputs.cpu().numpy(), y_val))
print(accuracy_score(test_outputs.cpu().numpy(), y_val))
과정이 추가되어야 정상 작동합니다.
실습 환경에 차이 때문에 발생하는 오류일 수도 있을 거 같아 여쭙습니다.
읽어주셔서 감사합니다.
test_outputs = test_outputs.to(device=device, dtype=torch.int64)
with torch.no_grad():
y_val = model(categorical_test_data)
loss = loss_function(y_val, test_outputs)
print(f'Loss: {loss:8f}')
여기서 y_val = model(categorical_test_data) 부분에 device 지정을 해줘야 하지 않나요( y_val = model(categorical_test_data).to(device))
앞서 train 단계에서 지정된 device가 test에서 사용된 device와 달라 오류가 발생합니다
RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cpu and cuda:0! (when checking argument for argument target in method wrapper_CUDA_nll_loss_forward)
또한 train 과정에서는 model에 device 지정한 부분이 존재합니다.
epochs = 500
aggregated_losses = []
train_outputs = train_outputs.to(device=device, dtype=torch.int64)
for i in range(epochs):
i += 1
y_pred = model(categorical_train_data).to(device) ## 해당 부분
single_loss = loss_function(y_pred, train_outputs)
aggregated_losses.append(single_loss)
책 정말 잘 공부하고 있습니다.
좋은 책 집필 감사합니다.
The text was updated successfully, but these errors were encountered: