반응형

Python/Debugging 41

TypeError: Object of type int64 is not JSON serializable 해결

JSON 관련 TypeError 디버깅(return 값 인식 오류) 프로그래머스 등의 코딩 테스트 연습 사이트에서의 답안 제출 과정과 같이 return 결과를 다른 곳에 보낼 때 발생할 수 있는 TypeError 종류에 대한 원인과 해결법을 살펴보도록 하겠습니다. 오류 상황 예시 및 원인 예를 들어, 두 정수 리스트 간의 내적값을 구하는 문제에 대하여 아래처럼 답안을 제출한 경우 return되는 값은 분명히 정답으로 제출되는 듯 하지만 아래와 같은 에러가 발생합니다. (에러 메시지 : TypeError: Object of type int64 is not JSON serializable) 예상되는 원인으로는 np.dot 함수의 출력 결과는 numpy.int64 자료형인데 기본 int 자료형과는 다르게 해당..

Python/Debugging 2022.08.07

RuntimeError: expected scalar type Long but found Float / RuntimeError: "log_softmax_lastdim_kernel_impl" not implemented for 'Long' 해결

파이토치 자료형 관련 오류 디버깅 Pytorch 사용 중 자료형 타입과 관련하여 발생할 수 있는 에러 종류 2가지에 대하여 원인 및 해결법을 간단히 정리해보도록 하겠습니다. 1. RuntimeError: expected scalar type Long but found Float 해당 오류는 정수형 타입 중 하나인 long 타입으로 구현되어야 하는 함수에게 float와 같이 다른 자료형의 텐서가 주어질 때 발생할 수 있는 오류입니다. 예를 들어, 다음과 같이 nn.CrossEntropyLoss 함수를 적용하는 간단한 상황을 살펴보겠습니다. import torch import torch.nn as nn X = torch.tensor([[1, 2, 0], [1, 0, 1]]).float() # 데이터 부분 :..

Python/Debugging 2022.07.23

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all() 해결법

if문 넘파이 배열 비교 연산자 ValueError 디버깅 비교문에서 numpy array 등 자료형에 대한 ==, != 연산 적용 시 등장할 수 있는 "ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()" 오류에 대하여 원인과 해결 방안을 다루어보도록 하겠습니다. (참고 : 판다스 시리즈 등 자료형에서도 비슷한 종류의 오류 발생이 가능합니다.) 에러 원인 아래는 두 넘파이 배열이 같은지를 if문 내에서 비교하려는 예시입니다. import numpy as np a = np.array([1, 2, 3, 4]) b = np.array([1, 2, 3, 4]) if a == b..

Python/Debugging 2022.07.14

Python Pandas에서 발생하는 KeyError: 0 해결법

파이썬 판다스 KeyError: 0 오류 디버깅 파이썬의 pandas 모듈에서 인덱싱 과정에서 발생하기 쉬운 KeyError 종류에 대하여 예상 원인과 이에 대한 해결법을 다루어보도록 하겠습니다. Case 1 : 열 이름 위치에 인덱스 번호를 대신 입력하는 경우 -> loc 함수 사용 아래와 같은 데이터프레임 df에 대하여 0번 인덱스 행을 가져오는 상황을 가정하겠습니다. 여기서 다음과 같이 인덱싱을 시도하면 KeyError: 0이 발생하게 됩니다. df[0] # KeyError: 0 발생 # 가능한 경우(열 이름만 가능) df['A'] df['B'] 이는 컬럼 이름이 들어가야할 자리에 인덱스 번호가 대신 들어간 상태이고, 0이라는 이름을 가진 열은 존재하지 않기에 해당 에러가 발생한 것입니다. 여기서는..

Python/Debugging 2022.06.14

코랩(Colab) 사이트가 빈 화면으로 등장하며 실행이 안될 때 해결법

구글 코랩(Google Colab) 실행 오류 해결법 구글 코랩 사이트에 접속 시, 빈 화면으로 등장하면서 실행이 제대로 되지 않는 경우가 있습니다. 이 경우, Colab이 정상 실행될 수 있는 해결법을 정리해보도록 하겠습니다. 크롬(Chrome) 브라우저의 버전이 오래된 경우 크롬 브라우저 환경에서 코랩을 사용하려는 경우, Chrome 버전이 구버전인 경우 빈 화면으로 뜨면서 정상 실행이 되지 않을 수 있습니다. 이 경우, 크롬 브라우저 업데이트 진행 후 구글 코랩 사이트에 다시 접속하시면 정상적으로 실행이 되는 것을 확인할 수 있습니다. Chrome 업데이트 방법은 아래의 글을 참고하세요. (참고 : 버전이 너무 오래된 경우에 때로는 크롬 재설치가 필요할 수도 있습니다.) Chrome 업데이트 - 컴..

Python/Debugging 2022.05.25

transformers 모듈 model.generate() 과정 shape 관련 오류 해결

transformers generate 함수 RuntimeError, ValueError 디버깅 transformers 라이브러리의 generate 함수 사용 중 shape 미스매칭으로 인하여 발생할 수 있는 두 가지 오류에 대하여 정리해보도록 하겠습니다. 1. 추가 dimension을 가지는 경우 RuntimeError: The size of tensor a (100) must match the size of tensor b (10) at non-singleton dimension 1 2. 단일 sequence일 때, 추가 dimension이 필요한 경우 ValueError: not enough values to unpack (expected 2, got 1) 정상 실행 코드 예시 예를 들어, 100 ..

Python/Debugging 2022.05.24

파이토치에서 모델 학습이 되지 않는 경우 원인 정리(파라미터가 그대로인 경우)

Pytorch gradient가 흐르지 않는 경우 원인과 해결법 파이토치 모듈을 이용하여 모델을 학습하는 과정에서 train 과정이 진행되는 것처럼 보여도 실제로는 파라미터가 업데이트되지 않고 학습이 안되는 경우가 있습니다. 이번 글에서는 제가 겪었던 원인을 바탕으로 모델 학습이 되지 않을 때 의심할만한 원인 3가지 정도를 간략하게 정리해보도록 하겠습니다. 1. 모델의 layer freeze 여부 체크 모델의 각 layer의 requires_grad 속성을 확인하여 해당 값이 True로 설정되어있는지를 확인해야 합니다. 이를 확인할 수 있는 방법의 코드는 아래와 같습니다. # 각 layer의 requires_grad가 True인지 확인 for param in model.parameters(): print..

Python/Debugging 2022.05.17

TypeError: 'tuple' object does not support item assignment / TypeError: unhashable type: 'list' 원인, 해결법

파이썬 튜플, 리스트 관련 TypeError 디버깅 파이썬 프로그래밍 중에 튜플, 리스트 자료형과 관련하여 발생가능한 대표적인 TypeError 두 가지에 대하여 원인과 대처법을 정리해보도록 하겠습니다. TypeError: 'tuple' object does not support item assignment 튜플로 선언된 자료에 인덱싱을 통한 값 추가, 수정 등을 시도할 경우 발생하는 오류입니다. t1 = (10, 20, 30) t1[0] = 15 # TypeError: 'tuple' object does not support item assignment 발생 해당 오류가 발생한 경우, 인덱싱을 시도하려했던 자료의 type을 검사하여 혹시 튜플 자료형이 아니었는지에 대하여 확인해보시면 됩니다. 해결법은 ..

Python/Debugging 2022.04.28

파이토치 RuntimeError: grad can be implicitly created only for scalar outputs 해결법

Pytorch loss.backward() 과정 에러 디버깅 파이토치에서 모델 학습 과정 내 backporpagation을 시도하는 도중, RuntimeError: grad can be implicitly created only for scalar outputs 라는 오류 메시지가 출력되었습니다. loss.backward() # 여기서 오류 발생 오류 원인 loss.backward() 과정은 기본적으로 1개의 스칼라 데이터에 대한 역전파를 수행합니다. 그러나, loss 변수 내에는 배치 내 데이터 각각에 대한 손실 함수 점수들이 벡터 형태로 저장된 점을 확인했습니다.(아래는 3개의 데이터에 대한 loss 점수 예시입니다.) print(loss) # tensor([1.5054, 1.3475, 1.0413]..

Python/Debugging 2022.04.23

파이토치 설치 과정 Solving environment 오류 해결

Case 1 : Anaconda Pytorch 설치 에러 디버깅 파이토치 사이트에서 conda를 이용한 명령어를 통해서 설치하는 도중 아래와 같은 오류가 발생하면서 설치 과정이 더이상 진행되지 못하였습니다. Solving environment: / The environment is inconsistent, please check the package plan carefully The following packages are causing the inconsistency: 오류 원인 cuda 라이브러리를 설치한 뒤에는 해당 환경에서 conda 명령어로 파이토치가 정상 설치됨을 확인하였는데, 이것이 원인으로 추측되기는 하였습니다. 오류 해결법(pip으로 설치) Pytorch 사이트에서 conda가 아닌 pi..

Python/Debugging 2022.04.15
반응형