-
Graph Neural Networks review (0) IntroDeep learning study/Graph study 2023. 1. 20. 00:30
Graph neural network 정리의 시작을 해보려고 합니다. 정리하고자 할 핵심적인 내용은 다음과 같습니다. 1. 전체적인 GNN model의 발전 역사 2. GNN 모델의 대표적인 모델 리뷰[ChebNet, GCN, GAT, GraghSAGE, GIN, Graphormer 등등] 3. GNN을 활용하는 task: Node classification, Graph classification, Link prediction 4. cs224w winter lecture 5. AMMI 2022 Course "Geometric Deep Learning": https://www.youtube.com/watch?v=5c_-KX1sRDQ&list=PLn2-dEmQeTfSLXW8yXP4q_Ii58wFdxb3C 왜..
-
밑바닥부터 시작하는 딥러닝3 (10) : 코드 품질 테스트카테고리 없음 2022. 9. 11. 15:27
10단계 테스트 목표 : 소프트웨어 개발에서 빼놓을 수 없는 테스트를 구현해 품질을 유지하고자 함 10.1 파이썬 단위 테스트 unittest를 사용하면 편함 class SquareTest(unittest.TestCase): # 순전파 확인 def test_forward(self): x = Variable(np.array(2.0)) y = square(x) expected = np.array(4.0) **self.assertEqual(y, expected) # 기대한 값이 맞는가?** # 역전파 확인 def test_backward(self): x = Variable(np.array(3.0)) y = square(x) y.backward() expected = np.array(6.0) self.asser..
-
밑바닥부터 시작하는 딥러닝3 (9) : 함수를 더 편리하게카테고리 없음 2022. 9. 11. 15:24
9 단계 함수를 더 편리하게 목표 : 'DeZero 함수의 세가지 개선점 추가' 9.1 파이썬 함수로 이용하기 : class Square(Function): def forward(self, x): y = x ** 2 return y def backward(self, gy): x = self.input.data gx = 2 * x * gy return gx class Exp(Function): def forward(self, x): y = np.exp(x) return y def backward(self, gy): x = self.input.data gx = np.exp(x) * gy return gx def square(x): return Square()(x) def exp(x): return Exp()..
-
밑바닥부터 시작하는 딥러닝3 (8) : 제 1 고지 미분 자동 계산카테고리 없음 2022. 9. 11. 15:21
8 단계 수치 미분 목표 : 기존 backward 메서드 처리효율 개선 및 확장 대비 구현 8.1 현재의 Variable 클래스 현재 재귀로 구현 되어있음 class Variable: # 생략.... def backward(self): f = self.creator if f is not None: x = f.input x.grad = f.backward(self.grad) x.backward() # 'backward'메서드에서 backward 메서드를 호출하고, 호출된 backward 메서드에서 또 다른 backward 메서드를 호출... # creator 함수가 없는 변수, self.creator가 None인 변수를 찾을 때까지 계속(재귀) 8.2 반복문을 이용한 구현 재귀 → 반복문 class Var..
-
밑바닥부터 시작하는 딥러닝3 (6) : 제 1 고지 미분 자동 계산Deep learning study/밑바닥 부터 시작하는 딥러닝3 2022. 9. 3. 00:35
6 단계 수치 미분 목표 : Variable과 Function 클래스를 확장하여 역전파를 이용한 미분 구현 6.1 Variable 클래스 추가 구현 class Variable: def __init__(self, data): self.data = data self.grad = None grad(미분값)도 저장 : None으로 초기화 해두고 실제 역전파 할때 미분값을 계산하여 대입 🚧 벡터나 행렬 등 다변수에 대한 미분은 gradient라고 한다. 6.2 Function 클래스 추가 구현 미분을 계산하는 backward 메서드 추가 forward 메서드 호출 시 건네받은 Variable 인스턴스 유지 class Function: def __call__(self, input): x = input.data y ..
-
밑바닥부터 시작하는 딥러닝3 (5) : 제 1 고지 미분 자동 계산Deep learning study/밑바닥 부터 시작하는 딥러닝3 2022. 9. 3. 00:32
5 단계 역전파이론 목표 : '역전파 이론 공부' 5.1 미분이란 : 미분이란 무엇일까요? : '변화율', '극한으로 짧은 시간에서의 변화량' 5.2 수치 미분 구현 컴퓨터는 극한을 취급할 수 없으니 대체할 방법이 필요함 → 수치미분 numerical differentiation : 매우 작은 값을 통해 미세한 차이를 사용해 함수의 변화량을 구하는 방법 수치 미분은 작은 값을 사용해 '진정한 미분'을 근사 → 오차가 존재 ⇒ '중앙차분' centered difference를 이용하여 근사 오차를 줄임 : f(x) - f(x+h) 대신 f(x-h) - f(x+h) 사용 🧪 전진 차분보다 중앙차분이 진정한 미분값에 가깝다는 사실은 Taylor series를 이용해 증명할 수 있음 [구현] def numeri..
-
밑바닥부터 시작하는 딥러닝3 (4) : 제 1 고지 미분 자동 계산Deep learning study/밑바닥 부터 시작하는 딥러닝3 2022. 9. 3. 00:29
4 단계 수치 미분 목표 : '미분이 무엇인지 복습하고 수치 미분이라는 간단한 방법으로 미분 계산' 4.1 미분이란 : 미분이란 무엇일까요? : '변화율', '극한으로 짧은 시간에서의 변화량' 4.2 수치 미분 구현 컴퓨터는 극한을 취급할 수 없으니 대체할 방법이 필요함 → 수치미분 numerical differentiation : 매우 작은 값을 통해 미세한 차이를 사용해 함수의 변화량을 구하는 방법 수치 미분은 작은 값을 사용해 '진정한 미분'을 근사 → 오차가 존재 ⇒ '중앙차분' centered difference를 이용하여 근사 오차를 줄임 : f(x) - f(x+h) 대신 f(x-h) - f(x+h) 사용 🧪 전진 차분보다 중앙차분이 진정한 미분값에 가깝다는 사실은 Taylor series를 ..
-
밑바닥부터 시작하는 딥러닝3 (3) : 제 1 고지 미분 자동 계산Deep learning study/밑바닥 부터 시작하는 딥러닝3 2022. 9. 3. 00:27
3 단계 함수 연결 '3단계에서는 또 다른 함수를 구현하고 여러 함수를 조합해 계산할 수 있도록 함' 3.1 Exp 함수 구현 딥러닝 모듈 만들때 class DNN(nn.Module): 과 같은 구조 Class Exp(Function): def forward(self, x): return np.exp(x) Function 클래스 상속후 forward 메서드에서 원하는 계산 구현 3.2 함수 연결 Function 클래스의 call 메서드는 입력과 출력이 모두 Variable 인스턴스이므로 자연스럽게 DeZero 함수들을 연이어 사용할 수 있었음 ⇒ self.data로 구현하지 않으면 다른 method에서 사용을 못함[확인 필요] A = Square() B = Exp() C = Square() x = Var..