전체 글 227

파이토치 - CNN을 사용한 이미지 분류 (Fashion-MNIST)

1. Fashion-MNIST 10가지 분류의 옷 및 액세서리(신발, 구두 등)를 이미지 데이터 28 X 28 픽셀 크기의 흑백 이미지 1) Fashion-MNIST 데이터로부터 DataLoader 작성 # 라이브러리 불러오기 import torch from torch import nn, optim from torch.utils.data import (Dataset, DataLoader, TensorDataset) import tqdm from torchvision.datasets import FashionMNIST from torchvision import transforms # 구글 드라이브와 구글 코랩을 연동 from google.colab import drive drive.mount('/conte..

파이토치 - 신경망의 모듈화

1) 활성화 함수 ReLU와 Dropout을 내장하는 커스텀 선형 계층을 만들고, 그것을 이용해서 MLP 작성 # 모듈 만들기 class CustomLinear(nn.Module): def __init__(self, in_features, out_features, bias=True, p=0.5): super().__init__() self.linear = nn.Linear(in_features, out_features, bias) self.relu = nn.ReLU() self.drop = nn.Dropout(p) def forward(self, x): x = self.linear(x) x = self.relu(x) x = self.drop(x) return x # 모듈로 네트워크 구성 mlp = mm...

파이토치 - Dropout과 Batch Normalization

1. Dropout을 사용한 정규화 1) 신경망 구성 # 라이브러리 불러오기 import torch from torch import nn, optim from torch.utils.data import TensorDataset, DataLoader from sklearn.datasets import load_digits digits = load_digits() # 데이터를 훈련용과 검증용으로 분할 from sklearn.model_selection import train_test_split # 전체의 30%는 검증용 X = digits.data Y = digits.target X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.3)..

파이토치 - Dataset과 DataLoader

파이토치에는 Dataset과 DataLoader라는 기능이 있어서 미니 배치 학습이나 데이터 셔플, 병렬 처리 까지 간단히 수행할 수 있다. TensorDataset은 Dataset을 상속한 클래스로 학습 데이터 X와 레이블 Y를 묶어 놓는 컨테이너이다. TensorDataset을 DataLoader에 전달하면 for 루프에서 데이터의 일부분만 간단히 추출할 수 있게 된다. TensorDataset에는 텐서만 전달할 수 있으며, Variable은 전달할 수 없으니 주의 Dataset은 직접 작성할 수도 있어서 대량의 이미지 파일을 한 번에 메모리에 저장하지 않고 필요할 때마다 읽어서 학습하는 등 다양하게 활용할 수 있다. TensorDataset을 DataLoader에 전달해서 데이터의 일부만 간단히 추..

파이토치 - MLP 구축과 학습

1) 손글씨 문자를 판별하는 MLP 작성 # 라이브러리 불러오기 import torch from torch import nn # 네트워크 구성 net = nn.Sequential( nn.Linear(64, 32), nn.ReLU(), nn.Linear(32, 16), nn.ReLU(), nn.Linear(16, 10) ) 2) 손글씨 문자 데이터의 학습 코드의 나머지 부분 # 라이브러리 및 데이터 불러오기 import torch from torch import nn, optim from sklearn.datasets import load_digits digits = load_digits() # 독립변수, 종속변수 분리 X = digits.data Y = digits.target # Numpy의 ndarr..

파이토치 - 로지스틱 회귀

1. 파이토치를 사용한 로지스틱 회귀분석 1) iris 데이터 준비 # 라이브러리와 iris 데이터 불러오기 import torch from torch import nn, optim from sklearn.datasets import load_iris iris = load_iris() # iris는 (0,1,2)의 세 가지 종류를 분류하는 문제이므로 (0,1)의 두 개의 데이터만 사용한다. # 원래는 학습용과 테스트용으로 나누어야 하지만 여기선 생략한다. X = iris.data[:100] y = iris.target[:100] # Numpy의 ndarray를 PyTorch의 Tensor로 변환 X = torch.tensor(X, dtype=torch.float32) y = torch.tensor(y, ..

파이토치 - 선형 회귀 모델

1. 파이토치로 선형 회귀 모델 만들기 (직접 만들기) y = 1 + 2x1 + 3x2 1) 테스트 데이터 생성 및 파라미터 학습을 위한 변수 정의 # 라이브러리 불러오기 import torch # 참(True)의 계수 w_true = torch.Tensor([1, 2, 3]) w_true # X 데이터 준비. 절편을 회귀 계수에 포함시키기 위해 X의 최초 차원에 1을 추가해 둔다. X = torch.cat([torch.ones(100, 1), torch.randn(100, 2)], 1) X # 참의 계수와 각 X의 내적을 행렬과 벡터의 곱으로 모아서 계산 y = torch.mv(X, w_true) + torch.randn(100) * 0.5 y # 기울기 하강으로 최적화하기 위해 파라미터 Tensor를..

파이토치 - 텐서 / 자동 미분

1. 텐서 생성과 변환 1) 텐서 생성 # 라이브러리 불러오기 import numpy as np import torch # 중첩 list를 지정 t = torch.tensor([[1,2],[3,4.]]) t # device를 지정하면 GPU에 텐서를 만들 수 있다. t = torch.tensor([[1,2],[3,4.]],device="cuda:0") t # dtype을 사용해 데이터형을 지정하여 텐서를 만들 수 있다. t = torch.tensor([[1,2],[3,4.]], dtype=torch.float64) t # 0부터 9까지의 수치로 초기화된 1차원 텐서 t = torch.arange(0, 10) t # 모든 값이 0인 100*10의 텐서를 작성해서 to 메서드로 GPU에 전송 t = torc..

파이토치 무작정 시작하기 6 - 모델 변수 프리징

https://www.youtube.com/watch?v=WCByVWpf4rQ # 라이브러리 임포트 import torch import torchvision import torchvision.transforms as transforms # data preprocessing from torch.utils.data import DataLoader # mini-batch import torch.nn as nn # loss import torch.optim as optim # optimizer # 구글 드라이브와 구글 코랩을 연동 from google.colab import drive drive.mount("/content/gdrive") # 데이터 경로 지정 및 GPU 설정 path = '/content/gd..

파이토치 무작정 시작하기 5 - GPU를 사용한 전이 학습 (colab 사용)

전이학습 이미 알고 있는 지식(데이터, 모델 등)을 다른 문제에 적용하여 풀어가는 과정 가지고 있는 데이터 양이 충분하지 않을 때, 외부 소스로 부터 좋은 특징들을 가져와서 모델에 사용 학습 데이터가 부족하더라도 원하는 모델을 학습할 수 있고 학습 시간을 줄일 수 있다. https://www.youtube.com/watch?v=hOSrn41lCkg # 라이브러리 불러오기 import torch import torchvision from torchvision import transforms import torchvision.transforms as transforms # data processing from torch.utils.data import DataLoader # mini-batch import ..

반응형