Deep Learning/PyTorch (15) 썸네일형 리스트형 Multi Layer Perceptron (다층 퍼셉트론?) 만들어보기 다층 퍼셉트론? (MLP)는 선형적 계층을 연결하여 input layer, hidden layer, output layer의 크게 세 가지 층을 가지며, 회귀문제의 경우 출력층을 선형 회귀구조를 사용하고 분류문제의 경우에는 출력층을 로지스틱 회귀 구조로 사용함. (회귀 구조에 관해서는 앞선 포스팅을 참고 해주세요~!) 선형적계층을 단순히 연결하게 되면, 전체 네트워크가 선형함수가 되는데, 이렇게 되면 복잡한 문제를 해결하기가 어려워진다. 따라서, 전체 네트워크에 비선형성을 부여하여 최적의 solution을 찾아가는 방법으로 Activation function (활성화함수)을 도입하게된다. 이번에도 Pytorch의 내장 모듈을 이용하여 간단한 신경망 모델을 구축해 보자. 위 그림과 같이 선형계층을 순차적으.. 다중 분류를 위한 Logistic Regression Model 만들기 앞서 포스팅 된 Logistic Regression 모델은 두 가지 Class에 대한 이진 분류를 수행하는것이다. 하지만 3개 이상의 Class 즉, 다중 분류를 위한 Logistic Regression은 어떻게 만들 수 있을까? 선형 결합 계층의 출력을 Class의 숫자만큼 설정하고, 손실함수로 Crossentropy에 Softmax가 추된 형태인 CrossEntropyLoss()를 이용한다. 아래의 코드와 같이 사용하면 손쉽게 다중분류문제도 해결해 볼 수 있다. Logistic Regression 구현해보기 PyTorch 내장 모듈 및 Iris 공개 데이터셋을 이용하여, 다음과 같이 Logistic Regression Model을 구현하였다. Torch 내장 모듈을 통한 선형회귀모델 만들기 앞선 포스팅에서는 Pytorch 내장 모듈을 사용하지 않고 수작업으로 선형회귀모델을 구현하였다. 하지만, 앞으로는 개발속도의 향상을 위해 내장된 모듈을 사용하여 개발을 편하게 해보자. 1. torch.nn 모델구축을 편하게 할 수 있도록 함. 2. torch.optim 최적화를 편하게 할 수 있도록 함. 위 두가지 모듈을 기반해서 선형회귀모델을 다시 만들어 보겠다. Pytorch에 내장된 모듈을 기반으로 선형회귀 모델을 만들어도 원하는 결과를 얻을 수 있음을 확인하였다. Tensor를 통한 선형회귀모델 만들기 파이토치의 기본 텐서를 이용하여 다음의 매개변수를 가지는 선형회귀모델을 얻도록 학습을 진행할 예정이다. 학습은 경사하강법을 기반으로 최적화 되었다. (수식 y=5 + 7x1 + 2x2) Tensor와 AutoGrad 딥러닝 프레임워크를 대중화한 여러가지 요소들 중에 하나로 꼽히는것이 바로 AutoGrad 기능이다. requires_grad = True라는 설정을 텐서에 부여하면 자동 미분 기능이 활성화 되며, 대부분의 인공신경망 연산에서 기본적으로 사용되고 있다. 다음에 해당하는 수식에 근거하여 계산이 이루어지며, 자동 미분으로 구한 결과와 수동으로 구한 결과가 일치함을 확인할 수 있다. 텐서(Tensor)의 구조와 기능 텐서(Tensor)는 딥러닝 프레임 워크에 있어서, 가장 기본이 되는 데이터 구조이다. 기본적인 Python 문법 혹은 Numpy 라이브러리와 유사한 사용법을 지니며, Numpy의 ndarray로의 변환도 가능하다 (단, 변환이전에 GPU에서 CPU로 텐서를 이동해야함!). CPU와 GPU상에서 개별적 텐서의 생성이 가능하며, Data Type도 별도로 지정이 가능하다. (아래의 그림을 참조바랍니다.) 물론 CPU에서 텐서를 생성하고 추후 GPU로 전송하는것 역시 가능합니다. 앞서 소개한 내용중 GPU상에 위치한 텐서를 Numpy ndarray로 변환하기위해서는 CPU로 그 위치를 바꾸어 주어야한다고 설명하였습니다 (이 때, to 메서드를 사용함). 물론 CPU상에 위치한 텐서는 .numpy() 메서드로.. 이전 1 2 3 다음