Python_Error

에러 해결: DeprecationWarning: elementwise comparison failed; this will raise an error in the future.

qlsenddl 2022. 3. 6. 21:37
728x90

해당 에러 발생 환경: PyCharm, numpy(1.22.2), python 3.9.7

해결 출처: https://stackoverflow.com/questions/44574679/python-deprecationwarning-elementwise-comparison-failed-this-will-raise-an

 

Python: DeprecationWarning: elementwise == comparison failed; this will raise an error in the future

I came across a problem with comparing the predictions of my model with the labels of training set. The arrays I'm using have shapes: Training set (200000, 28, 28) (200000,) Validation set (10000,...

stackoverflow.com

 tensorflow를 통해 MLP 구조를 만들고 MNIST dataset을 학습하는 연습 코드를 만들다가 다음과 같은 에러가 발생했다. 정확도를 판단하기 위해서 test data의 예측 클래스와 참값 클래스가 일치하는지 정도를 비교하는 코드를 넣었는데 에러가 발생했고, 테스트 정확도가 0.00%가 나왔다. → 출처의 질문과 동일한 상황

 문제 상황이 tensorflow 연습 코드에서 나왔지만 알고보면 numpy 관련 에러다. '=='를 통해서 두 numpy 변수가 같은지를 요소 단위로(elementwise) 비교하는데 두 numpy 변수의 크기(shape)가 같지 않아 발생한 에러다. → print(np.shape(변수명))을 통해 두 변수의 shape이 같은지 확인해보니 다른 것을 확인했다.

 나의 경우 참값 클래스는 벡터인데 반해, model.predict을 해서 나온 예측 클래스 변수가 벡터가 아닌 행렬이기 때문에 발생한 에러였다. 때문에 아래와 같은 코드를 추가하여 prediction 결과로 나온 행렬 형태의 변수를 벡터로 바꿨다.

y_train_pred = np.argmax(y_train_pred, axis=1)

 

 결론: 이 에러는 elementwise로 비교하는 연산을 할 때 비교하는 두 변수 간의 크기가 맞지 않아서 발생한 에러입니다.(numpy 외 다른 변수에서도 같은 에러 문구가 발생하는지는 모르겠네요;; 우선 제 경우는 numpy type을 다루다가 발생한 에러입니다.)

728x90