[Python] matplotlib default 설정
·
프로그래밍 Programming/파이썬 Python
딥러닝 후에 visualization할 때 일일이 세팅을 정해줘야해서 번거롭다. 그래서 default setting을 위한 코드들을 미리 작성하고 필요할 때마다 복사해서 사용하고자 한다. 좋은 코드를 발견하면 계속 추가할 예정이다. 1. Grid setting import matplotlib as mpl # grid setting mpl.rcParams['grid.color'] = '#808080' mpl.rcParams['grid.linestyle'] = '--' mpl.rcParams['grid.linewidth'] = 0.5 mpl.rcParams.update({"axes.grid" : True}) 위의 세 줄은 색상, line style, linewidth에 대한 설정이다. 색상은 v.2.0에 적..
[PyTorch] gradient descent로 변수를 직접 update할 때 주의할 점
·
프로그래밍 Programming/파이썬 Python
코드 상에서 특정 변수를 따로 gradient descent 방법으로 업데이트해야할 일이 있는데 이상하게 에러가 났다. 그래서 쉬운 예제를 통해서 이해를 해보고자 했다. a = torch.linspace(0., 2. * math.pi, steps=25, requires_grad=True) b = torch.sin(a) c = 2 * b d = c + 1 out = d.sum() out.backward(retain_graph=True) gradient = a.grad.clone().detach() a -= 0.001 * gradient print(a.requires_grad) 이렇게 코드를 짜면 RuntimeError: a leaf Variable that requires grad is being used..
[PyTorch] DataLoader shuffle 기능 사용 시, RuntimeError: Expected a 'cuda' device type for generator but found 'cpu'
·
프로그래밍 Programming/파이썬 Python
PyTorch에서 dataloader 기능 중에 shuffle을 사용하고자했는데 다음과 같은 에러를 봤다. RuntimeError: Expected a 'cuda' device type for generator but found 'cpu' 참고로 나는 내가 만든 custom dataset을 class로 만들고, 그 클래스에 대하여 DataLoader를 만들었다. 인터넷을 검색하여 찾아보니 이 shuffle 기능을 위해 사용하는 generator가 cpu로 설정되어 있으면 그 device에서 generator를 생성하는 것으로 보였다. 나는 custom dataset에서 모두 데이터의 device를 cuda로 설정하는 작업을 거치기 때문에 오류가 생긴 것이다. 이 글에서 보면 generator를 설정할 수..
[PyTorch] GPU에서 텐서 사용하기
·
프로그래밍 Programming/파이썬 Python
Tensorflow와 달리 PyTorch는 사용하는 텐서를 따로 gpu에 올려주는 작업을 해야한다. 그러나 PyTorch는 기본적으로는 cpu를 사용한다. 그러나 딥러닝 관련 연구나 프로젝트를 수행하려는 사람들은 gpu를 가진 경우가 많을 것이다. 따라서 웬만하면 gpu를 사용하는 것이 더 좋으므로 gpu를 default로 설정하는 게 낫다. 또한 나의 경우에는 메모리를 좀 더 차지하더라도 정밀하게 계산했으면 좋겠어서 double형 (또는 float64형)을 기본적으로 사용하고 싶었다. 이 글에서 다루는 내용은 다음과 같다. 1. Tensor를 gpu에서 사용하도록 하는 방법 2. Default 설정을 바꿔서 gpu를 쓰도록 지정하는 방법 1. Tensor를 gpu에서 사용하도록 하는 방법 tensor를..
[PyTorch] PyTorch 다차원 텐서 곱(matmul)
·
프로그래밍 Programming/파이썬 Python
PyTorch에서 텐서끼리의 곱이 나와있는데 그 규칙을 알기 위해 이것저것 해본 것을 기록한 글이다. 여기서는 PyTorch의 matmul만 다룬다. https://pytorch.org/docs/stable/generated/torch.matmul.html?highlight=matmul#torch.matmul torch.matmul — PyTorch 1.12 documentation Shortcuts pytorch.org 다음 글을 보면 1차원 텐서(벡터)나 2차원 텐서(행렬) 곱은 이해하기 어렵지 않다. 맨 마지막 항목에 주목해야한다. 맨 마지막 항목이 두 텐서 중 하나는 1차원 이상, 다른 하나는 N(>3)차원 이상일 때의 곱을 나타낸 것이다. 여기서 미리 알아야할 것 :: Tensor에서 첫 번째 ..
[에러기록] matplotlib의 imshow를 쓸 때 커널이 죽는 현상 (추가)
·
프로그래밍 Programming/파이썬 Python
이미지 분류기를 테스트하는 과정에서 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..
[PyTorch] PyTorch에서 GPU 사용
·
프로그래밍 Programming/파이썬 Python
tensorflow 2.0 이상 버전을 사용하고 있어서 당연히 PyTorch도 쉽게 gpu를 쓸 수 있을 거라 생각했지만 그렇지 않았다. 왜냐하면 PyTorch도 CUDA 버전을 맞춰줘야 하기 때문이다. 일단은 torch 라이브러리에서 다음 코드를 입력하여 True가 나오는지 False가 나오는지 확인한다. torch.cuda.is_available() 본인에게 gpu가 있음에도 false가 나온다면 CUDA를 설치해야하는 문제가 된다. CUDA 설치에 대해 전혀 모른다면 다음 링크에서 확인하자. https://normal-engineer.tistory.com/163 CUDA 버전을 제대로 확인하고 설치해야 불필요한 시간 낭비를 줄인다. 확인 방법은 Pytorch 사이트에서 확인하는데 https://py..
[에러기록] (pytorch) RuntimeError: Numpy is not available
·
프로그래밍 Programming/파이썬 Python
내가 사용한 python version은 3.10.2였는데 이 에러는 torchvision이 3.9 이상에서는 작동을 못하므로 python version 때문에 발생하는 문제라고 한다. 따라서 다른 가상환경 (python version==3.9.7)에서 실행했더니 에러가 없었다.
[Python] Visual studio code에서 python 파일(.py) compile하는 방법과 exited with code=9009 에러 해결
·
프로그래밍 Programming/파이썬 Python
visual studio code에서 python 파일을 compile하려고 했는데 다른 영상에서 본 대로 따라해도 이상하게 컴파일이 되지 않는 문제가 발생하였다. 혹시 나와 같은 문제가 발생한 분들을 위해 글로 남긴다. 1. 일반적인 Visual studio code에서 python 사용하기 기본적으로 Visual studio code에서 compile하는 방법은 다음과 같다. (참고로 나는 anaconda를 설치한 상태이고 가상환경도 여러 개 있지만 다른 프로그램으로도 코딩을 해보고 싶어서 visual studio code를 설치한 것이다.) 1) python 파일을 다운받아서 설치한다. 버전 때문에 고민이 될 수 있는데 일단은 가장 최신 것으로 다운로드 https://www.python.org/do..
[매트랩MATLAB] Symbolic expression에서 미분 및 적분 수행
·
프로그래밍 Programming
MATLAB의 장점 중 하나는 복잡한 기호 연산을 symbolic toolbox를 이용해서 쉽게 구할 수 있다는 점이다. 손으로 직접 식을 풀고 나서 내가 제대로 했는지 확인하기에 좋고, 적분의 경우에는 analytic하게 풀고 나서 검증용으로 매트랩에서 나온 결과를 비교할 수도 있다. 아래에 나오는 제목은 MATLAB 내의 함수 명을 기준으로 적었다. 1. diff (Differentiation 함수) symbolic formula에 대해서 diff(symbolic formula, 미분하고자 하는 변수)를 입력하면 미분을 수행한다. 예시 syms x f = x^3 ; diff(f, x) 다음 코드에 대한 결과 ans = 3*x^2 $x^3$을 미분한 $3x^2$이 나온다. diff를 쓸 때 첫번째 ar..