전체 글

전체 글

    [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 같은 경우에..

    [python] 클래스 메서드(class method)와 정적 메서드(static method)

    1. 클래스 메서드 (Class Method) 아래의 코드처럼 일반적으로 클래스 내에서 함수를 정의하고 사용하는 메서드는 객체에 소속되는 인스턴스 메서드이다. class Human: def __init__(self, age, name): self.age = age self.name = name def intro(self): print(str(self.age) + "살 " + self.name + "입니다.") park = Human(13, "박진명") park.intro() Human 클래스의 intro 메서드는 첫 번째 인수 self를 받아 이 객체에 대한 작업을 수행한다. 따라서, park 객체에 대해 호출되며, 해당 인스턴스의 나이와 이름을 조사하여 출력한다. 즉 park.intro() 메서드에서 ..

    [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시간 공부 --> ??점 선형회귀를 이용하여 시험 성적을 예측한다면, 아래의 패턴을 학습하..

    [python] stack 구현 (고정길이 스택 fixed stack, class 활용)

    (본 포스팅은 Do It! 시리즈의 '자료구조와 함께 배우는 알고리즘 입문 - 파이썬편'을 참고하여 작성하였습니다.) 데이터를 임시 저장하는 기본 자료 구조는 대표적으로 두 가지가 있는데, 스택(stack)과 큐(queue)이다. 스택은 일반적으로 데이터 입력과 출력 순서가 후입선출(Last in First Out)인 것이 특징이다. 이 기능을 구현하기 위해서 우리가 생각해봐야할 부분은 어떤 것이 있을까? 크게 살펴보자면 첫째로, 데이터를 집어 넣는 push 기능 둘째로, 데이터를 꺼내는 pop 기능 셋째로, 스택의 길이를 알려주는 len 기능 넷째로, 스택이 비었는지 확인하는 기능 다섯번 째로, 스택이 가득 차 있는지 확인하는 기능 여섯번 째로, 특정 값이 스택 어디에 위치해있는지 확인하는 기능 일곱번..

    [python] 파이썬 Class 내 self.<variable name>에서 self 키워드는 어떤 역할을 할까?

    파이썬 클래스를 처음 접하다보면, 추상적인 개념에 적잖이 당황할 수도 있습니다. 특히 class를 만들 때, class안에 함수를 정의할 때 self 라는 키워드를 많이 보셨을 겁니다. 이 self는 굉장히 중요한 역할을 하게 되는데, 무엇을 의미하는지 간단하게 알아보도록 하겠습니다. self라는 키워드는 클래스가 만들어진 이후, 인스턴스로서 활용될 때 굉장히 중요한 역할을 합니다. 이때 class variable과 instance variable에 대해 알아야 할 필요가 있는데, 간단하게 말해서 self가 활용된다면 이는 곧 class 전역에 영향을 미치는 것이 아닌 인스턴스에만 국한되어 작동하게 됩니다. 예시 1) class_variable vs instance_variable 코드를 보면서 살펴보겠..

    [python] finally 블록 - 파이썬의 자원정리 방법

    파이썬으로 작업하다보면 예외 처리시, finally 블록을 사용하는 것을 곧잘 목격할 수 있습니다. finally는 언제 사용하는 것일까요? 이 finally 블록은 예외 발생 여부와 상관없이 반드시 실행해야 할 명령을 지정합니다. 이해를 돕기 위해 예를 들어보겠습니다. 어떠한 데이터 분석과제를 위해 모든 gpu자원을 하나의 계정(user A)으로 할당해주었습니다. 그렇다면 동일한 서버 내 다른 유저(user B)는 사용중인 gpu에 접근할 수 없을 것입니다. 이때 만약에 user A가 딥러닝을 돌려놓고 밥먹으러 나갔다면, 또는 외출했다고 가정해보겠습니다. user B는 gpu를 활용해야 하지만, user A가 사용하고 있어서 활용하지 못하게 됩니다. 하지만 user A의 딥러닝 코드가 에러가 났다면, ..

    [python] is 연산자란?

    파이썬에서 is 연산자는 두 변수가 같은 객체를 가리키고 있는지 확인할 때 is 구문을 사용한다. 그렇다면 is 연산자와 같음을 나타내는 == 연산자의 차이점은 무엇일까? 아래 코드를 통해 이해해보자. # 3개의 리스트 생성 list1 = [1, 2, 3] # 리스트 할당 list2 = list1 # 리스트1을 대입 받는 방식으로 리스트2 생성 list3 = list1.copy() # 리스트1의 사본을 리스트3의 값으로 할당 print('list1 과 list2는 같은 객체를 가리키고 있나요? : ', list1 is list2) print('list1 과 list3은 같은 객체를 가리키고 있나요? : ', list1 is list3) print('list2 와 list3은 같은 객체를 가리키고 있나요?..

    [python] 키워드 가변 인수 (keyword variable arguments)

    (본 포스팅은 김상형 저자의 '파이썬 정복' 책을 참조했습니다) 파이썬을 활용하다보면 함수를 정의하거나 불러올 때 **kwargs 또는 **args와 같은 것을 곧잘 목격하셨을 거라고 생각합니다. 이 친구들은 키워드 가변 인수(keyword arguments kwargs 등으로 표기됨)를 의미하는데요. 호출원에서 여러 개의 키워드 인수를 전달하면, 인수의 이름과 값을 쌍으로 사전으로 만들어서 전달합니다. 함수 내부에서는 사전을 읽듯이 인수값을 꺼내 사용합니다. 아래 간단한 활용 예제를 살펴보겠습니다. # keyword variable argument 활용 예제 def calcstep(**args): begin = args['begin'] end = args['end'] step = args['step']..