본문 바로가기
728x90
반응형

Error Note30

[Pytorch] Expected all tensors to be on the same device, but found at least two devices, cuda:0 and cpu! 서로 다른 공간에 있는 텐서들끼리 연산하려고 할때 발생하는 에러입니다. 연산해야 할 텐서 중 하나는 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가 나온 .. 2023. 3. 1.
[Bug]Invalid SOS parameters for sequential JPEG 이미지를 읽어 올 때 발생하는 버그(?)입니다. 학습진행이 불가능하다거나 하지는 않았지만 거슬려서 원인을 찾아보았습니다. 아래 몇몇 사이트를 참고해본 결과 갤럭시 휴대폰을 이용해 찍은 JPEG이미지에서 발생하는 버그입니다. 몇몇 휴대폰들이 JPEG이미지를 생성하는데 버그가 있어 종종 발생하는 현상이라고 합니다. 참고1: https://legacy.imagemagick.org/discourse-server/viewtopic.php?t=30320 참고 2: https://kr.mathworks.com/matlabcentral/answers/630994-warning-jpeg-library-error-8-bit-invalid-sos-parameters-for-sequential-jpeg 2023. 2. 5.
RuntimeError: view size is not compatible with input tensor's size and stride ~ - 전체 에러 문구 RuntimeError: view size is not compatible with input tensor's size and stride (at least one dimension spans across two contiguous subspaces). Use .reshape(...) instead. ​ expand(), view(), transpose() 등의 함수를 이용해 텐서의 모양을 바꿀 때 새로운 텐서를 생성하는 것이 아니라, 저장된 메모리의 주소는 그대로 둔체 텐서의 모양만 바꾸게 됩니다. 이런 경우 메모리 주소가 연속적이지 않게 변하게되므로 발생하는 에러입니다. ​ ​ - 해결 방법 연속적이지 않은 메모리 주소를 연속적이게 만들어주면 됩니다. 1) contiguous() .. 2023. 1. 30.
RuntimeError: grad can be implicitly created only for scalar outputs - 전체 에러 문구 RuntimeError: grad can be implicitly created only for scalar outputs ​ 파이토치에서 모델 학습 중 backporpagation을 시도하는 도중에 발생하는 에러입니다. loss.backward()는 기본적으로 1개의 스칼라 데이터에 대해 backporpagation를 수행하도록 되어있습니다. 그러나, loss 변수 내에는 배치에 포함된 모든 데이터 각각에 대한 loss 가 저장되어 있습니다. 이 값들을 sum이나 mean을 통해 하나로 합쳐주어야 합니다. ​ ​ ​ - 해결 방법 배치 안에 포함된 모든 데이터들에 대한 loss를 모아서 역전파를 수행해야하기 때문에, sum이나 mean을 통해서 값을 하나로 만들어 주면 됩니다. lo.. 2023. 1. 30.
728x90
반응형