목록ML & DL & RL (32)
No Limitation

본 포스팅은 유원준 님의 Pytorch로 시작하는 딥러닝 입문 교재를 참고했음을 밝힙니다 https://wikidocs.net/63565 본 포스팅은 CNN에 대한 이론적인 내용은 따로 다루지 않으며 Pytorch에서 구현하는 코드 위주와 관련된 설명임을 밝힙니다 이론과 관련한 부분은 본 교재 https://wikidocs.net/62306 01. 합성곱과 풀링(Convolution and Pooling) 합성곱 신경망(Convolutional Neural Network)은 이미지 처리에 탁월한 성능을 보이는 신경망입니다. 이번 챕터에서는 합성곱 신경망에 대해서 학습합니다. ... wikidocs.net 다음을 참고하기 바랍니다. 우선 CNN에 들어가는 입력 형태를 가정해보면, 배치 크기 x 채널 x 높..

본 포스팅은 유원준 님의 Pytorch로 시작하는 딥러닝 입문 교재를 참고로 했음을 밝힙니다. https://wikidocs.net/61046 다중 퍼셉트론을 사용하여 손글씨를 분류하는 모형을 짜보자 처음에는 sklearn 패키지에 있는 손글씨 데이터 load_digits()을 사용하여 글씨를 분류하는 작업을 수행해보자 다음과 같이 digits을 로드하고 나면 본 데이터 안에는 이미지를 나타내는 데이터와 레이블 정보가 들어간 데이터가 구성이 되어 있다. 예를 들어 첫 번째 샘플의 경우 0이 들어있고 다음과 같이 데이터가 들어가있음을 확인할 수 있다. 총 데이터는 1797개의 샘플로 구성이 되어 있으며 다음과 같이 이미지를 출력해서 확인해보면 다음과 같이 데이터들이 들어있음을 확인할 수 있다. digits..

참고 자료 : 유원준 님의 Pytorch로 시작하는 딥러닝 입문 https://wikidocs.net/61010 신경망의 기초 단위 퍼셉트론을 소개할 때 많이 나오는 XOR gate. 다른 AND, OR Gate와는 달리 선형 분류기로는 분류가 될 수 없는 구조가 XOR gate이다. 고로, 이는 단층 퍼셉트론으로는 분류가 불가능하며 다층 퍼셉트론을 통해 분류가 가능하게 된다. 그렇다면 이러한 논리를 Pytorch에서는 어떻게 구현하는 지 확인해보자. 우선, 단일 퍼셉트론이 왜 안되는지 직접 실행을 통해 확인해보자 초기 세팅과 데이터 준비 신경망 구축, nn.Linear + nn.Sigmoid의 단일 퍼셉트론으로 구축됨을 확인할 수 있다. Training 수행 0 0.7273974418640137 100..

참고 자료 https://wikidocs.net/53560 유원준 님의 Pytorch로 시작하는 딥러닝 입문 책 자료를 참고하였습니다. 개인적으로 공부하면서 느끼지만 유원준 님께서 정리하신 본 교재는 무료기도 하고 초보자가 pytorch를 입문하는 것을 넘어 머신러닝 개념 자체를 쉽게 정리해주셔서 초보자 분들이 보시기에 좋은 것 같습니다. 추천드립니다 유명한 MNIST 예제를 풀어보는 방법을 구현하겠습니다. 우선 데이터가 어떻게 구성되는지부터 간단하게 소개하면 이 부분에 대한 설명을 해보면 우선 '3'이라는 손글씨는 다음과 같이 픽셀로 담기는데 28 x 28의 데이터로 구성이 된다. 이 데이터에서 한 행이 곧 28개의 픽셀이 담기고 이 28개의 행이 총 28개가 있어 한 관측치 당 28*28의 총 784..

참고 자료 https://wikidocs.net/53560 유원준 님의 Pytorch로 시작하는 딥러닝 입문 책 자료를 참고하였습니다. Binary가 아닌 Multi class인 경우는 softmax 확률 값을 근간으로 확률이 가장 높은 값에 labeling이 된다. 이 때의 class label은 One-hot encoding을 통해 값이 저장됨을 알고 있다. 이 때의 손실 함수는 다음 수식처럼 Cross Entropy의 개념을 사용한다. 3개의 샘플에 대해 5개의 label이 존재한다는 문제를 가정해보자. 즉, 예를 들어 철수, 상우, 주성이 있으면 이 세 명이 각각 A, B, C, D, E 중 어떤 그룹에 속하냐 뭐 이런 문제를 가정할 수 있는 것이다. 다음과 같이 코드를 수행해보자 즉 아래의 hy..

참고 자료 https://wikidocs.net/53560 유원준 님의 Pytorch로 시작하는 딥러닝 입문 책 자료를 참고하였습니다. Pytorch에서 로지스틱 회귀 분석을 구현해보자. Binary Classification을 예로 들어 살펴보자 주어진 데이터는 다음과 같다. 다음 데이터를 바탕으로 가중치와 편향 값을 초기화하면 다음과 같다. 이에 Hypothesis는 시그모이드 함수에 회귀식을 집어 넣는 식으로 구축이 가능하고 Loss는 Cross Entropy 값으로 구현된 수식을 집어 넣어 구현할 수 있다. 이로써 Logistic Regression의 Gradient Descent는 다음과 같이 구현할 수 있다. 그렇다면 동일한 기능을 nn.Module을 사용하여 구현해보자 다음과 같이 층을 쌓아..

참고 자료 https://wikidocs.net/53560 유원준 님의 Pytorch로 시작하는 딥러닝 입문 책 자료를 참고하였습니다. Pytorch에서는 데이터셋을 상속받아 직접 데이터셋을 지정하는 식으로 많이 사용한다고 한다. 일반적으로 데이터셋을 구축할 때는 다음 세가지를 정의한다고 한다. __init__(self) : 데이터셋의 전처리를 해주는 부분 __len__(self) : 데이터셋의 길이, 샘플 수 __getitem__(self,idx) : 데이터셋에서 특정 1개의 샘플 가져오기 앞서 구현하였던 다중 선형 회귀를 돌리는 데이터셋을 정의하는 커스텀 데이터셋을 다음과 같이 사용할 수 있다.

참고 자료 https://wikidocs.net/53560 유원준 님의 Pytorch로 시작하는 딥러닝 입문 책 자료를 참고하였습니다. 만약 데이터가 몇천만개나 억개가 넘어가는 굉장히 방대한 데이터의 경우면 이러한 데이터에 대해 일일이 Gradient Descent를 수행하는 것은 매우 연산이 많게 될 것이다. 이러하 경우 전체 데이터를 작은 단위로 나누어 학습을 하게 되는데 이 때 이 사이즈를 batch size라고 한다. 이러한 batch size=5라고 하면 전체 데이터를 5등분을 수행하게 각 batch 마다 Gradient Descent를 수행하게 된다. 이 Gradient Descent를 전체 데이터에 수행하면 1번의 epoch가 수행되게 된다. Batch Size = 1인 경우는, 전체 데이터..

https://wikidocs.net/60754 유원준 님의 Pytorch로 시작하는 딥러닝 입문 이전 포스팅 https://yscho.tistory.com/44 대부분의 Pytorch 상의 모델은 클래스로 구현한다. 이번에는 클래스를 통한 구현하는 예제를 익히고자 한다. 앞선 포스팅에서 nn.Linear를 이용하여 모형을 구현한 예제를 살펴보았다. 이는 클래스로 만들면 더 편하게 사용할 수 있는데 다음과 같이 사용하는 것이 일반적이다. 다음과 같이 객체로 정의하는 것이다. 그렇다면 클래스 객체 안의 내용을 자세하게 파헤쳐보자 우선 모형을 만들 때 nn.Module을 상속받고 super() 함수를 통해 자동으로 __init__을 nn.Module 것을 상속받게 한다. 또한 forward 함수를 통해 예측..

참고 자료 https://wikidocs.net/53560 유원준 님의 Pytorch로 시작하는 딥러닝 입문 책 자료를 참고하였습니다. 선형 회귀를 수행하기 위해 매번 수식을 직접 정의해서 푸는 것은 매우 까다롭기에 친절하게도 파이토치에서는 선형 회귀를 수행해주는 모듈이 존재하는데 대표적으로 많이 쓰이는 nn.Linear 모듈이다. 또한 loss 함수도 직접 구현할 필요 없이 내장된 다양한 loss가 존재하는데 regression에서 많이 사용하는 MSE 모듈의 경우도 별다른 구현 없이 내장된 함수를 사용할 수 있다. 다음 코드들을 살펴보자 단순 선형 회귀부터 살펴보자. 우선 다음과 같이 데이터를 구축해준 다음에 nn.Linear를 사용하여 선형 회귀 모형을 만들어보자 우선 선형 회귀 모형을 호출해준다...