본문 바로가기

728x90

Programming

(34)
[Python] ImportError: cannot import name 'A' from partially initialized module 'B' (most likely due to a circular import) 코드를 돌리다가 마주친 ImportError! 처음에는 import하려는 코드에 오류가 있어서 안되는건가 했는데 뒤에 설명을 보니 circular import 때문에 나타나는 경우가 많다고 써있었다! 알고보니 A.py 에서는 import B, B.py에서는 import A로 순환식으로 import를 하고 있어서 발생한 문제였다!
[Python] TypeError: cannot perform reduce with flexible type (에러 해결 - list_eval, dtype) 데이터프레임을 csv 파일로부터 읽어와 np.mean을 하는데 만난 에러! TypeError: cannot perform reduce with flexible type 테스트 후 저장 할 때까지는 잘 작동했는데 다시 load하니 이런 에러를 만났다. 찾아보니 주로 이 에러는 수치형 데이터가 아닌 데이터로 수치형 연산을 하려할 때 발생한다고 한다. 그래서 확인해보니 나는 분명 수치형 데이터를 저장해주었는데 다시 load하는 과정에서 살펴보니 str 객체로 바뀌어있었다. 왜그럴까?! 찾아보니 pandas의 read_csv 함수 같은 경우 첫 번째 행의 데이터를 기준으로 각 column 별 데이터형 타입을 자동으로 맞추어주는데 종종 잘못 매칭을 해주는 경우가 있다고 한다. 그래서 굳이 데이터타입이 잘못 매칭되..
[Python] Function Annotation (':', '->' 이란?) project_azua github 코드를 분석하던 중 함수에서 -> symbol을 만나게 되었다. 예전에는 그냥 무심코 지나갔었는데 코드를 하나하나 분석하다보니 궁금증이 생겼다. 파이썬은 다른 언어에 비해 문법의 제약이 적은 편이다. 이로인해 유연성이 높고 쉬운 반면 작성된 코드를 봤을 때 해석하기에 비교적 모호할 수가 있다. 예를 들면 파이썬에서는 함수를 선언 할 때 파라미터의 타입을 따로 지정할 필요가 없어 개발자는 신경 쓸 부분이 훨씬 적다. 그러나 코드 작성자가 아닌 다른 개발자는 코드를 봤을 때 어떤 타입형이 들어가야 직관적으로 알기 힘들다. 따라서 이런 문제를 해결해주기 위해 사용하는 기능이 바로 "Function Annotation"이다. (Type hints) 공식 문서의 예시를 통해서 ..
[PyTorch] Tensor와 tensor PyTorch를 사용하다보면 Tensor가 있고, tensor가 있다. 그 둘의 차이는 무엇일까? 1. Tensor torch.Tensor란 PyTorch의 자료구조 클래스이다. tensor형 데이터를 담고 있는 클래스를 의미한다. 2. tensor torch.tensor는 어떤 데이터를 tensor 자료형으로 만들어주는 함수이다. (내부적으로는 데이터를 copy하는 구조) 즉, tensor를 통해서 어떠한 데이터를 Tensor 데이터 타입으로 만들어준다고 보면 된다. 다음 코드를 보면 의미를 이해하기 더 쉬울 것이다. >>> a = torch.tensor([1]) >>> a tensor([1]) >>> type(a) torch.Tensor 아래 document를 살펴보면 Tensor 구조체에서 사용할 ..
[tqdm] tqdm 진행바에 설명 추가하기 (set_description, set_postfix) tqdm 라이브러리를 사용하면 코드의 진행 상태를 진행바(progress bar)로 확인할 수 있어 매우 편리하다. 특히 시간이 오래 걸리는 코드같은 경우 종종 정말 이 코드가 돌아가고있는게 맞는건지 멈춘건 아닌지.. 대체 어느정도 더 기다려야하는지 의문일 때 tqdm 라이브러리는 매우 유용하다. 사용방법도 매우 간단하다. 아래와 같이 tqdm 라이브러리를 설치해준 후 !pip install tqdm 다음과 같이 코드를 돌려보면 a = range(10000000) for _ in tqdm(a) : continue 이렇게 진행상황을 살펴볼 수 있다. 주로 학습을 할 때 학습이 어느정도 진행되었는지 확인하는 용으로 많이 사용한다. tqdm은 단순하게 진행 상태만 확인할 뿐만 아니라 간단한 설명을 추가하여 현..
[Pandas] 데이터프레임 조건문에서 에러 (typeerror ' >' not supported between instances of 'method' and 'int' pandas) 데이터프레임에서 특정 조건에 해당하는 행만 selection하고 싶을 때 다양한 방법이 있다. 그 중에서 아래와 같이 원하는 컬럼명에 대해서 조건을 부여하여 행을 filtering 하는 방법이 있다. df[df.(원하는 컬럼명) (조건)] 예를 들면 이런 식으로! df[df.age > 20] 그런데 오늘 갑자기 filtering을 진행하니 다음과 같은 오류가 떴다. 맨날 하던건데 왜 안되지?? 하고 순간 엄청 당황했더라는.. typeerror ' >' not supported between instances of 'method' and 'int' pandas 에러를 보면 method와 int형에 대해 비교가 불가능하다는 것인데 왜 변수 명을 method라고 판단하지? 하고 당황했다. 알고보니 내가 필터링..
예상치 못한 (또는 이유를 모르는) GPU 에러 정리 참고 사이트 예상치 못한 GPU 에러 만났을 때 참고해볼만한 사이트 혹시 내가 만난 에러가 밑에 있는지 한 번 확인해보면 시간도 단축하고 좋을 것 같다! 이유를 알 수 없는 GPU 에러 정리(device-side assert, CUDA error, CUDNN_STATUS_NOT_INITIALIZED 등등…) brstar96.github.io
[Tensorboard] SummaryWriter import 시 kernel died 현상 from torch.utils.tensorboard import SummaryWriter # default `log_dir` is "runs" - we'll be more specific here writer = SummaryWriter('') 노트북으로 원격 서버에 접속하여 SummeryWriter를 불러오기만 하면 커널이 죽는 현상..! 찾아보는데 나랑 똑같은 증상이 없었고, 있어도 해결책에 대한 얘기가 없었다. 이유는 모르겠는데 다른 라이브러리들을 로드하기 전에 SummaryWriter부터 load하고 시작하면 커널이 죽지 않고 제대로 실행이 된다.. 사실 아직도 이유는 잘 모르으나 일단 급하게 해결해야하는 분들은 한 번 시도해보면 좋을 듯 하다. 혹시 이유를 알게 된다면 정리해두겠다!

728x90