티스토리 뷰

728x90

해당 에러의 발생 원인은 'cuda:0' device 타입의 tensor를 직접 numpy로 변환할 수 없어서 생기는 오류입니다. 이미 tensor는 gpu에 올려져서 계산되다가, numpy 연산을 하려면 cpu에서 가능하니 이런 에러가 발생하는 것입니다. 따라서 'Tensor.cpu()' 등의 메서드를 사용해야합니다.

해결 방법은 tensor를 cpu에 재할당 해주면 됩니다. 

 

보통 방법은 변수 뒤에 

.cpu().numpy()
.detach().numpy()

 

붙여주면 되는데 안 돼서 이번엔 이렇게 했더니 됐습니다.

 

.detach().cpu().numpy()

 

- detach(): 텐서를 다른 센터로부터 분리(detach)하여 연산 그래프에서 해당 텐서와 연결을 끊는 역할을 합니다. gradient 계산에서 분리할 때도 사용합니다.

 

 

 

728x90
댓글