Notice
Recent Posts
Recent Comments
Link
관리 메뉴

뛰는 놈 위에 나는 공대생

[에러기록] matplotlib의 imshow를 쓸 때 커널이 죽는 현상 (추가) 본문

프로그래밍 Programming/파이썬 Python

[에러기록] matplotlib의 imshow를 쓸 때 커널이 죽는 현상 (추가)

보통의공대생 2022. 7. 9. 19:37

이미지 분류기를 테스트하는 과정에서 matplotlib을 쓰면 커널이 자꾸 죽는 현상이 발견되었다.

 

아나콘다 프롬프트를 보면 다음과 같은 에러를 확인하였고,

아래의 참고 링크를 통해서 문제를 해결했다.

 

 

[I 19:30:40.558 NotebookApp] Kernel started: d0c3b529-6a30-422b-a296-d963b18e4149, name: python3 OMP: Error #15: Initializing libiomp5md.dll, but found libiomp5md.dll already initialized. OMP: Hint This means that multiple copies of the OpenMP runtime have been linked into the program. That is dangerous, since it can degrade performance or cause incorrect results. The best thing to do is to ensure that only a single OpenMP runtime is linked into the process, e.g. by avoiding static linking of the OpenMP runtime in any library. As an unsafe, unsupported, undocumented workaround you can set the environment variable KMP_DUPLICATE_LIB_OK=TRUE to allow the program to continue to execute, but that may cause crashes or silently produce incorrect results. For more information, please see http://www.intel.com/software/products/support/. [I 19:31:34.559 NotebookApp] KernelRestarter: restarting kernel (1/5), keep random ports WARNING:root:kernel d0c3b529-6a30-422b-a296-d963b18e4149 restarted

 

 

 

이 경우에는 imshow가 있는 코드에 다음을 추가한다.

 

import os    
os.environ['KMP_DUPLICATE_LIB_OK']='True'

 

이렇게 했더니 정상적으로 동작되었다.

 

 

 

참고

https://forum.jovian.ai/forum/t/jupyter-kernel-died-after-plt-imshow-tensor-obj/14830

 

Jupyter kernel died after plt.imshow(Tensor Obj.)

img, label = dataset[0] print('Label (numeric):', label) print('Label (textual):', classes[label]) image_permuted = img.permute((1,2,0)) image_permuted.shape plt.imshow(img[0])

forum.jovian.ai


(내용 추가)

 

저 코드에 대한 문제가 자꾸 발생해서 일일이 저 코드를 넣어주는 것은 너무 불편하다는 생각이 들었다.

 

위의 에러를 자세히 살펴본 끝에 mkl이라는 라이브러리가 여러 곳에 있어서 중복 실행되는 문제인 듯했다.

 

여러 에러를 막는 방법이 있지만

 

conda install nomkl

 

이 코드를 아나콘다 프롬프트를 이용해서 설치하는 방법이 있다. nomkl 라이브러리는 추가적으로 mkl 라이브러리를 설치하는 것을 막음으로써 근본적으로 발생하는 원인인 mkl 중복을 막겠다는 것이다.

 

(nomkl에 대한 정보 : https://anaconda.org/anaconda/nomkl 그리고 https://stackoverflow.com/questions/66224879/what-is-the-nomkl-python-package-used-for 을 보자)

 

나는 이상하게도 저걸 설치하는 게 불가능해서 다른 방법을 찾았다.

 

시스템 환경 변수에 들어가서 

 

 

저 위의 그림의 환경변수(N)에 들어간다.

 

그러면

user에 대한 사용자 변수(U)와 시스템 변수(S)가 있는데

각각에 대해서

 

변수 : KMP_DUPLICATE_LIB_OK

값 : TRUE

 

로 설정해서 새로 만들기를 해주면 된다.

 

그러면 위의 코드 없이도 잘 작동한다.

Comments