pytorch
[pytorch] torch.tensor.detach() 의 기능
파이토치에서 Tensor 객체의 detach() 메소드는 현재 Tensor 객체와 동일한 데이터를 가지지만 연산 그래프(Computational Graph)에서 분리된 새로운 Tensor 객체를 생성합니다. 이 메소드는 일반적으로 Tensor 객체를 다른 Tensor 객체로 변환하고자 할 때 사용됩니다. 예를 들어, 주어진 Tensor 객체에 대한 연산의 결과로 생성된 새로운 Tensor 객체가 있을 때, 이 새로운 Tensor 객체를 사용하여 추가적인 계산을 수행하고자 할 때, 기존 Tensor 객체의 연산 그래프와의 의존성을 제거하여 메모리 사용량을 줄이고 계산 속도를 향상시키는 데 유용합니다. detach() 메소드는 requires_grad 속성을 False로 설정하여 기존 Tensor 객체와 다..
[pytorch] 파이토치 opencv, mxnet, torchmetrics 설치 시 gpu 인식 불가 이슈 해결
pytorch나 tensorflow를 다루다보면 어떠한 패키지를 설치했을 때, 패키지가 cpu 버전으로 내려가는 이슈가 있어서 gpu 인식을 못한다. 이때 해결하기가 굉장히 번거로운데, 필자 같은 경우에는 가상환경을 처음부터 재설치했다. 이런 이슈는 특히 텐서플로우보다는 pytorch에서 더 많이 발생했다. 그중에서도 많이 설치하는 라이브러리를 위주로 몇개 설명을 하자면... opencv 이 패키지는 왜인지는 모르겠지만 conda를 통해 opencv를 설치했을 때는 pytorch에서 cuda를 인식하지 못하게 되었다. 이 경우 pip install opencv-python 명령어를 통해 설치하면 말끔하게 해결되니 참고하자. mxnet mxnet과 같은 경우도 정상적으로 설치하면 문제가 되지 않으나.. ..
[python] 파이썬 class의 __call__ 함수 (매직메소드)
파이썬을 다루다보면 __call__함수에 직면하는 경우가 생깁니다. 저와 같은 데이터 사이언티스트의 경우에는 __call__함수는 Tensorflow의 def call() 메서드나 PyTorch의 def forward() 메서드가 대표적이라고 할 수 있는데요. 인스턴스를 생성하고 자동으로 클래스의 객체도 호출할 수 있게 만드는 기능입니다. 아래처럼 리스트를 받아 난수 10개를 뿌려주는 난수생성기 클래스로 표현되었다고 생각해봅시다. 인스턴스 메서드 구현 아래처럼 pick 메서드를 활용할 때, 출력물이 생성되고, 10개의 난수를 담은 리스트가 리턴되는 것을 확인할 수 있습니다. import random class RandomNumberReturn: def __init__(self): self.numbers ..
[PyTorch] 맥북 M1 Graph 관련 패키지 에러 없이 설치하는 방법 (networkx, torch-sparse, torch-geometric, dgl, dglgo)
그래프 이론을 python으로 구현하려고 할 때, pytorch와 관련된 패키지를 많이 사용하는 편입니다. 단순하게 pip를 이용하고 설치하고 실행하면 좋겠지만, 제대로 된 정보 없이 설치를 진행한다면 온갖 에러에 직면할 수 있습니다. 필히 pytorch의 버전과 호환이 되며 본인의 os 환경(linux, mac, window) 등을 고려하여 설치를 진행해야 합니다. 또한, 2023년 기준 아직까지 맥 환경에서는 gpu활용을 위한 패키지 설치가 불가능한 것을 확인했습니다. 이 포스팅에선 맥 환경에서 networkx, torch-sparse, torch-sparse, torch-geometric, dgl, dglgo 설치에 대해 다뤄보겠습니다. 1. Network X 설치 방법 networkx 같은 경우에..
[PyTorch] 파이토치를 활용한 선형회귀 구현
(본 포스팅은 PyTorch로 시작하는 딥 러닝 입문 교재를 참고하여 작성하였습니다.) 선형회귀를 구현하기에 앞서 아래 지식이 선행되면 이해하기 더 쉽습니다 :) 가설 (Hypothesis) 손실 함수 (= 목적 함수 = 비용 함수) ; loss function = objective function = cost function 경사 하강법 (Gradient Descent) 공부시간과 시험 성적에 대한 데이터가 아래 테이블처럼 나와있다고 가정해보겠습니다. Study Hours (x) Result (y) 1 20 2 40 3 60 4 ? 1시간 공부 --> 20점 2시간 공부 --> 40점 3시간 공부 --> 60점 4시간 공부 --> ??점 선형회귀를 이용하여 시험 성적을 예측한다면, 아래의 패턴을 학습하..
[딥러닝] 합성곱 신경망 - 직관적으로 convolutional layer 깊이에 대해 이해하기
본 포스팅에서는 수식적으로 합성곱 연산을 설명하기 보다는 그림에 의존한 직관적인 내용을 이야기 해보겠음 합성곱 연산 완전 연결층(Dense Layer)과 합성곱 층(Convolutional Layer) 사이의 근본적인 차이는 어떻게 될까? Dense층은 입력 특성 공간에 있는 전역 패턴을 학습하지만, 합성곱 층은 지역 패턴을 학습합니다. 만약 이미지라면 작은 2D 윈도우로 입력에서 패턴을 찾습니다. 컨브넷은 두 가지 흥미로운 성질을 제공하는데요. 첫째, 학습된 패턴은 평행 이동 불변성(translation invariant)를 갖습니다. 컨브넷이 이미지의 오른쪽 아래 모서리에서 어떤 패턴을 학습했다면, 다른 곳(예를 들어 왼쪽 위 모서리)에서도 이 패턴을 인식할 수 있습니다. 해당 패턴을 학습했기 때문에..