728x90
반응형
서로 다른 공간에 있는 텐서들끼리 연산하려고 할때 발생하는 에러입니다. 연산해야 할 텐서 중 하나는 GPU에 하나는 CPU에 있을 때 발생합니다. GPU와 CPU는 엄연히 다른 기기이기 때문에 메모리 공간 또한 분리되어 있습니다.
따라서! 텐서끼리 연산을 할 때에는 반드시 같은 기기에 두어야 합니다.
그렇다면, 두 텐서가 같은 기기에 있는지 어떻게 확인할 수 있을까요? 바로, is_cuda()함수를 사용하면 됩니다!
# CPU 텐서
t = torch.randn(3,3)
t.is_cuda # False
# GPU 텐서
t = torch.randn(3,3).cuda() # .cuda()로 GPU로 옮겨줄 수 있습니다.
t.is_cuda # True
연산에는 대부분 GPU를 이용하기 때문에 False가 나온 텐서들에 대해서는 .cuda()함수를 이용해 GPU로 옮겨줄 수 있습니다.
또 다른 방법으로는 .to() 함수를 이용할 수도 있습니다. 아래처럼 파라미터로 옮겨갈 디바이스를 지정해주면 됩니다!
new_tensor = x.to(device. dtype=torch.float64)
728x90
반응형