인공지능/파이토치 15

파이토치 - 전이 학습

1. 데이터 준비 1) DataLoader 작성 # 구글 드라이브와 구글 코랩을 연동 from google.colab import drive drive.mount('/content/gdrive') # 라이브러리 불러오기 import torch from torch import nn, optim from torch.utils.data import (Dataset, DataLoader, TensorDataset) import tqdm # DataLoader 작성 from torchvision.datasets import ImageFolder from torchvision import transforms # ImageFolder 함수를 사용해서 Dataset 작성 train_imgs = ImageFolder("..

파이토치 - 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..

반응형