Python 78

[Error] CUDA-LAUNCH_BLOCKING=1 error

pytorch를 다루다 보면 아래와 같은 에러를 마주칠 때가 있다. 이와 같은 CUDA 에러가 나는 원인은 다양하다. 가장 많이 발생하는 오류 중 하나는 loss 값을 계산할 때 값이 0~255 사이 값이 아니라 음수가 나오거나 하는 형태일 때 발생할 수 있다. 0~1사이로 정규화 하게되면 에러가 해결된다. 이 뿐만 아니라 모델의 메모리가 부족한 경우에도 발생할 수 있으니 이때는 Batch size를 조절하거나 자연어처리인 경우 max length를 조절하는 등의 조치를 취해야 한다.

Python/Pytorch 2022.06.25

[Error] module 'scipy.sparse' has no attribute 'coo_array'

networkx를 사용해서 그래프를 그리려고 하면 module 'scipy.sparse' has no attribute 'coo_array' 이 에러를 마주치는 경우가 발생할 수 있다. 해당 에러가 출력되는 원인은 다양한데 첫 번째로는 scipy의 버전이 다르기 때문이다. 1. scipy == 1.8.0 `coo_array`는 scipy==1.8.0 version에만 존재하기 때문에 먼저 version을 맞춰주자. 2. networkx == 2.7.1 networkx의 version도 맞춰주자 3. pyg-nightly PyG를 upgrade해서 변환해보자. pip install pyg-nightly

Python/Pytorch 2022.06.23

[Python] python에서 pickle file 다루기

python에서 데이터를 다룰 때 csv, xlsx과 같은 데이터는 많이 다루어 본 적 있을 것이다. 최근에는 yaml이나 pickle file을 많이 다루게 되는데, 왜 csv와 같은 확장자를 사용하지 않고 pickle을 사용하는 것일까? file을 csv나 xlsx 등과 같은 파일로 저장하는 경우 데이터의 고유한 정보를 담지 못한다. 예를 들어, python에서 list를 csv에 저장하게 되는 경우 다시 호출할 때 list 구조로 받아오는 것이 아니라 str으로 변환된 상태로 불러오게 된다. 그렇다면 ast와 같은 함수를 사용해서 str를 다시 list로 변환하는 작업을 수행해야 한다. pickle은 데이터의 자료 구조를 그대로 저장할 수 있기에 list를 pickle로 저장하면 list구조로 바로..

Python/Algorithm 2022.06.20

[Pytorch] LSTM(Long Short-Term Memory) 코드 구현

Contents LSTM (Long Short-Term Memory)은 RNN (Recurrent Neural Network)가 가지고 있는 장기 의존성 문제(long term dependency)를 해결하기 위해 제안된 모델이다. hidden state $h_t$와 cell state $c_t$로 구성되어 있으며, $h_{t-1}$은 t-1번째 Layer의 hidden state를 의미한다. $h_0$은 초기 hidden state를 의미하며, 0으로 설정한 후 학습을 진행한다. \[ \begin{equation} \begin{split} i_t & = \sigma(W_{ii} x_t + b_{ii} + W_{hi} h_{t-1} + b_{hi} ) \\ f_t & = \sigma ( W_{if} x_..

Python/Pytorch 2022.06.17

numpy array 구조를 image로 저장하기

이미지를 호출하기 위해서는 다음과 같은 패키지가 필요하다. from PIL import Image import numpy as np 이미지를 호출하고, 이를 np.array로 변환하면 28*28 이미지는 28*28*1 차원을 가지는 array가 될 것이다. 마지막 1은 channel을 의미하며, channel이 3인 경우 RGB 컬러 이미지를 의미한다. IMG_DIR = f'../datasets/images' img_path = os.path.join(IMG_DIR, file_name + '.jpg') img = np.array(Image.open(img_path)) 위 코드는 이미지가 저장된 경로에 접근해 jpg 파일을 호출하는 코드다. 호출된 코드는 아래와 같은 구조를 가지고 있다. array 구조를..

Python 2022.06.01

array와 asarray의 차이

numpy를 사용하는 코드를 참고하다 보면 array를 사용하는 경우와 asarray를 사용하는 경우를 볼 수 있다. 그렇다면 어떤 경우에 array를 쓰고, asarray를 쓰는 것일까? 구조적으로 보면 array와 asarray는 동일하다. 다만, array의 경우 copy=True가 기본값이지만, asarray의 경우 copy=False가 기본값이다. array를 다른 변수에 할당하고 원본을 변경할 경우 array의 copy본은 변경되지 않는다. 그러나 asarray의 경우에는 원본이 변경될 경우 asarray의 복사본까지 변경된다. a = np.ones([3, 4]) a_array = np.array(a) a_asarray = np.asarray(a) a[1] = 0 print(f'a_array ..

Python/Algorithm 2022.05.09

빅오, 빅오메가, 빅세타란?

Contents 백준이나 코드업 등 코딩 테스트에서 진행하는 알고리즘들에서 빅오(Big-O)라는 단어는 많이들 들어봤을 것이다. 그렇다면 빅오메가, 빅세타는 무엇일까? 먼저 빅오부터 알아보자. 빅-오(Big-O) 빅오는 코딩 테스트에서 시간복잡도를 다룰 때 주로 사용된다. 대개 최악의 경우를 의미하며, $\text{O(n)}, \text{O(n log(n)} $ 등 다양하게 존재한다. 예를 들어, 입력값 $n$에 대해서 $4n^2 + 3n + 4$ 번 만큼 계산하는 함수가 있다면, 최고차항만 고려하고 계수는 무시한다. 즉, 이때의 시간 복잡도는 $\text{O}(n^2)$이 되는 것이다. $\text{O}(1)$대부분 $\text{O}(\text{n})$을 기준으로 빠름을 나눈다. \[ \text{O}(..

Python/Algorithm 2022.04.28

[Python] ConnectionResetError (request)

크롤링을 하다 보면 아래와 같이 '원격 호스트에 의해 강제로 끊겼습니다'라는 에러를 볼 때가 있다. 이는 requests 모듈에서 url을 가지고 올 때 발생하는 오류로 header를 추가하는 방식으로 간단하게 해결이 가능하다. header는 윈도우의 경우 찾고자 하는 url에서 F12를 누르고 Network로 들어간 후 하단에 보면 'user-agent'를 복사해서 넣어주면 끝이다. url = f'target_url' headers = {'user-agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36'} requests.get(ur..

Python 2022.04.27

[Pytorch] Pytorch 에서 모델 요약 보기 with torchsummary

tensorflow 같은 경우에는 model.summary()를 통해서 간편하게 모델의 정보를 확인할 수 있다. 그렇다면 PyTorch에서는 불가능할까? 아니다!! Torch도 torchsummary를 지원해주고 있기에, torchsummary를 설치하면 확인할 수 있다. 확인하기에 앞서 우리는 이런 구조의 간단한 CNN을 만들 수 있을 것이다. 그런다음 아래의 코드를 실행하면 tensorflow의 model.summary()와 유사한 그림을 가지고 올 수 있다. from torchsummary import summary​ 각 layer의 output shape와 각 parameter에 대한 정보도 다 나온다. 또한 용량까지 나오니 엄청나게 좋다..! 한가지 단점이 있다면 아래와 같이 model의 inp..

Python/Pytorch 2022.04.18
반응형