Deep Learning (20) 썸네일형 리스트형 TensorDataset과 Dataloader에 대해 알아보자 TensorDataset은 Dataset을 상속한 Class이며 입력데이터 X와 레이블 Y를 묶어 놓은 컨테이너라고 생각하자. 이 TensorDataset을 DataLoader에 전달하면 이후의 학습 for loop에서 데이터의 일부만을 선택적으로 추출할 수 있다. (이 때, TensorDataset에는 텐서형태만 전달이 가능함) 처음사용할때는 굳이 이것을 사용해야할까라는 의구심이 샘솟을 수 있으나, 익숙해지면 그 소중함을 느낄 수 있다. 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을 구현하였다. Logistic Regression (로지스틱 회귀) Losgistic Regression은 분류를 위한 선형 모델이며, 기존의 Linear Regression과의 다른점은 연속적이었던 목적 변수 y가, 0 또는 1의 이산값으로 바뀌게 된다는 것이다. 이 때, 0 또는 1의 이산값을 만들어주기 위해 Sigmoid라는 활성화함수(Activation Function)을 도입하고, 그 수식은 다음과 같다. 로지스틱 회귀도 앞선 선형회귀 모델처럼 확률모델이며, y가 파라미터 z의 베르누이 분포를 따른다고 가정한다. 앞선 포스팅에서 소개한 베르누이 분포의 최대우도추정을 적용시 손실함수는 아래와 같은 수식으로 나타나며, 이 손실함수가 우리가 앞으로 흔히 접하게될 Cross-Entropy임을 기억하자! Torch 내장 모듈을 통한 선형회귀모델 만들기 앞선 포스팅에서는 Pytorch 내장 모듈을 사용하지 않고 수작업으로 선형회귀모델을 구현하였다. 하지만, 앞으로는 개발속도의 향상을 위해 내장된 모듈을 사용하여 개발을 편하게 해보자. 1. torch.nn 모델구축을 편하게 할 수 있도록 함. 2. torch.optim 최적화를 편하게 할 수 있도록 함. 위 두가지 모듈을 기반해서 선형회귀모델을 다시 만들어 보겠다. Pytorch에 내장된 모듈을 기반으로 선형회귀 모델을 만들어도 원하는 결과를 얻을 수 있음을 확인하였다. Tensor를 통한 선형회귀모델 만들기 파이토치의 기본 텐서를 이용하여 다음의 매개변수를 가지는 선형회귀모델을 얻도록 학습을 진행할 예정이다. 학습은 경사하강법을 기반으로 최적화 되었다. (수식 y=5 + 7x1 + 2x2) 이전 1 2 3 다음