본문 바로가기

머신러닝, 딥러닝/파이토치12

[파이토치 스터디] DataLoader 사용 📚 미니배치와 DataLoader 사용하기 파이토치에서는 DataLoader를 사용해서 미니 배치 형태로 쉽게 처리할 수 있다. import torch import torch.nn as nn import torch.nn.functional as F from torch.utils.data import TensorDataset # 텐서데이터셋 from torch.utils.data import DataLoader # 데이터로더 x_train = torch.FloatTensor([[73, 80, 75], [93, 88, 93], [89, 91, 90], [96, 98, 100], [73, 66, 70]]) y_train = torch.FloatTensor([[152], [185], [180], [196], [.. 2022. 3. 2.
[파이토치 스터디] 경사하강법 구현, Class 사용하기 📚 선형회귀로 경사하강법 살펴보기 • 경사하강법은 위와 같은 cost function을 미분해서 기울기(gradient)가 가장 심한 지점을 구해서, 비용함수의 최저 지점으로 이동하는 방향을 찾아내는 알고리즘이다. 📌 변수 선언 import torch import torch.nn as nn import torch.nn.functional as F import torch.optim as optim x_train = torch.FloatTensor([[1], [2], [3], [4], [5], [6]]) y_train = torch.FloatTensor([[2], [4], [6], [7], [11], [14]]) 📌 가중치, 편향 초기화 #%% 가중치, 편향 초기화 W = torch.zeros(1, requ.. 2022. 3. 1.
[파이토치 스터디] 파이토치 기초 📚 텐서(Tensor) 조작하기 ✅ 브로드캐스팅 m1 = torch.FloatTensor([[3, 3]]) m2 = torch.FloatTensor([[2, 2]]) print(m1) print(m2) print(m1 + m2) 텐서 간의 사칙연산을 수행할 때, 텐서의 크기가 동일하면 이상없이 진행된다. m1 = torch.FloatTensor([[1, 2]]) m2 = torch.FloatTensor([3]) # [3] -> [3, 3] print(m1) print(m2) print(m1 + m2) m1 = torch.FloatTensor([[1, 2]]) m2 = torch.FloatTensor([[3], [4]]) print(m1) print(m2) print(m1 + m2) 텐서의 차원과 크기가 .. 2022. 3. 1.
[파이토치 스터디] 준지도 학습 (Semi-Supervised Learning) 📚 준지도 학습 (Semi-supervised learning) 정답 라벨이 있는 데이터와 없는 데이터를 함께 사용해서 모델을 학습시키는 방법이다. 더 많은 데이터를 확보해서 성능을 향상할 수 있다는 장점이 있다. 📚 의사 라벨링 (Pseudo labeling) 사전 학습 모델로 라벨링이 되지 않은 데이터를 예측하고, 그 예측값을 기준으로 라벨링을 해서 기존의 학습 데이터와 함께 사용하는 방식. 단, 예측으로 생성한 라벨 값을 학습에 사용하기 때문에 데이터가 정확하지 않을 수 있다. 의사 라벨링 방식은 크게 두 가지가 있다. 의사 라벨링을 이용하기 전 데이터를 준비하는 과정은 다음과 같이 동일하다. 📘공통 전처리 과정 📌라이브러리 불러오기 import torch import torchvision impo.. 2022. 2. 24.
[파이토치 스터디] 전이학습, 모델 프리징 📚전이 학습 (Transfer Learning) ✅ 전이학습 이란? 기존의 모델을 불러와서 풀고자 하는 새로운 문제에 적용하는 방식을 의미한다. 파이토치에서는 torchvision.models as models를 이용해서 ImageNet 대회에서 사용된 사전학습 모델을 쉽게 사용할 수 있다. 📌라이브러리 및 데이터 불러오기 import torch import torchvision import torchvision.transforms as transforms from torch.utils.data import DataLoader import torch.nn as nn import torch.optim as optim #GPU 사용여부 확인 device = torch.device("cuda:0" if tor.. 2022. 2. 23.
[파이토치 스터디] 클래스 불균형 다루기 (가중 무작위 샘플링, 가중 손실 함수) 📚 가중 무작위 샘플링 (Weighted Random Sampling) 일반적으로 분류 문제에서 클래스가 불균형할 경우 과적합을 야기할 가능성이 높다. 딥러닝 모델 학습시에는 전체 데이터가 불균형 하더라도, 미니 배치를 뽑을 때 각 클래스를 균형 있게 뽑아서 학습시킬 수 있다. 이 방식을 가중 무작위 샘플링(weighted random sampling) 이라고 한다. 📌 가중치 함수 설정 : torchvision.datasets.ImageFolder 사용 def make_weights(labels, nclasses): labels = np.array(labels) # where, unique 함수를 사용하기 위해 numpy로 변환한다. weight_list = [] # 가중치를 저장하는 배열을 생성한다... 2022. 2. 23.