Notice
Recent Posts
Recent Comments
Link
관리 메뉴

뛰는 놈 위에 나는 공대생

[에러기록] RuntimeError: Expected a 'cuda' device type for generator but found 'cpu' 본문

프로그래밍 Programming

[에러기록] RuntimeError: Expected a 'cuda' device type for generator but found 'cpu'

보통의공대생 2022. 12. 30. 22:22

이 에러는 pytorch에서 dataloader를 쓸 때 발생할 수 있는 에러이다.

 

RuntimeError: Expected a 'cuda' device type for generator but found 'cpu'

 

dataloader는 클래스라서 내부를 뜯어보지 않는 이상 잘 모르지만

나는 항상 텐서를 torch.cuda.FloatTensor 또는 torch.cuda.DoubleTensor로 쓴다.

 

torch.set_default_tensor_type(torch.cuda.FloatTensor)

그런데 이렇게 하더라도 데이터로더 상에서는 cpu 텐서를 내뱉는다.

그래서 dataloader 코드를 바꿔줘야 한다.

 

dtype = torch.float
device = torch.device("cuda")

train_dl = DataLoader(train_data, batch_size=64, shuffle=True, generator=torch.Generator(device=device))
test_dl = DataLoader(test_data, batch_size=64, shuffle=True, generator=torch.Generator(device=device))

이렇게 하면

 

xb,yb = next(iter(train_dl))
print(xb.dtype)
>> torch.float64

double tensor가 나온다. float tensor가 나오도록 하고 싶은데 이는 좀 더 알아봐야할 것 같다.

Comments