[pytorch] nn.BCEWithLogitsLoss VS nn.BCELoss 차이 [ic]nn.BCEWithLogitsLoss[/ic] 와 [ic]nn.BCELoss[/ic]는 둘 다 [ic]이진 분류(binary classification)[/ic]에 사용되는 로스함수다. 이번 포스팅에서는 두함수의 차이를 알아볼 거다. 1) 예제 코드 준비 (1) 모델 생성 import torch import torch.nn as nn # Define a simple model that takes in a single input and produces a single output class Model(nn.Module): def __init__(self): super(Model, self).__init__() self.linear = nn.Linear(1, 1) def forward(self, x).. 머신러닝,딥러닝/딥러닝 2022. 12. 30. [pytorch] 모델 save/load 하는 방법 파이토치 모델을 저장하고, 저장된 모델을 다시 불러오는 방법에 대해 알아보자. 이 글과 읽으면 좋은글 [딥러닝] Fine Tuning(미세 조정) 꿀 tip [pytorch] model.eval() vs torch.no_grad() 차이 [pytorch] transforms.Compose 사용 방법 1. custom 모델 생성 예제에서 사용할 간단한 모델을 생성하자. class LinearRegressionModel(nn.Module): def __init__(self): super().__init__() # Parameter 초기화 self.weights = nn.Parameter(torch.randn(1, requires_grad=True, dtype=torch.float)) # Parameter 생.. 머신러닝,딥러닝/딥러닝 2022. 12. 29. [pytorch] Subset 사용법 정리 [ic]Subset[/ic] 모듈은 데이터셋을 관리하는데 편리함을 제공한다. 먼저 기본 컨셉부터 이해하자. 1) [ic]Subset[/ic] 기본 컨셉 (1) toy 데이터셋 준비 import torch from torch.utils.data import Subset, DataLoader # Create a dataset with 5 examples dataset = torch.tensor([[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]]) print(dataset) #output ''' tensor([[ 1, 2], [ 3, 4], [ 5, 6], [ 7, 8], [ 9, 10]]) ''' (2) 추출하고 싶은 데이터의 인덱스 넘버 # Create a list of indice.. 머신러닝,딥러닝/딥러닝 2022. 12. 29. [딥러닝] Fine Tuning(미세 조정) 꿀 tip Fine tuning 이란? pre-trained 모델을 새로운 Task에 적용시키는 과정을 말한다. 그 과정은 아래와 같이 분류할 수있다. 1. 새 데이터를 통해 모델 파라미터를 업데이트 2. 새 Task에 맞게 모델 구조 변형 이 글과 읽으면 좋은 글 [pytorch] fine-tuning 예제 [pytorch] model.eval() vs torch.no_grad() 차이 이번 포스팅에서는 Fine Tuning(미세조정)을 효과적으로 할 수 있는 아이디어를 제시하고자 한다. 크게 4가지 케이스로 분류 가능하다. 1) 새 데이터셋이 클 경우 (1) pretrained 데이터와 유사성이 크다. 가장 좋은 상황으로 모든 옵션이 가능하다. [ic]feature extractor[/ic] 뒷부분과 [ic]c.. 머신러닝,딥러닝/딥러닝 2022. 12. 27. [pytorch] pretrained model 쉽게 사용하는 방법 이번 포스팅에서는 사전학습 모델(pretrained model)을 사용하는 법을 알아보자. 사전학습 모델(pretrained model)은 torchvision에서 기본 제공한다. FAQ. 1. 전이 학습이란? 다른 데이터셋으로 잘학습되어 있는 모델을 사용 장점: 이미 다량의 데이터로 학습되어 있기 때문에 데이터 부족 문제 해결 2. 학습된 데이터셋이 우리가 사용하려는 데이터셋과 전혀 다르다면 효과가 없지 않나? 데이터 셋과 연관도가 낮다면 상대적으로 성능은 떨어질 수 있다. 하지만 가지고 있는 데이터가 적다면 pretrained 모델을 사용하는 것이 더 좋다. 본 포스팅은 아래 순서로 진행된다. 1. 사용 가능 모델 확인 2. 모델 로드하기 3. 모델변경해보기(fine-tuning) 4. transfo.. 머신러닝,딥러닝/딥러닝 2022. 12. 26. [pytorch] nn.Dropout inplace 역할은 무엇일까? [ic]nn.Dropout(p=0.2)[/ic] 확률을 의미하는 p인자는 익숙한 사람이 많다. 하지만 [ic]nn.Dropuout(p=0.2, inplace=True)[/ic]와 같이 [ic]inplace[/ic]가 붙어 있는걸 보는 순간 불편하다. 이번 포스팅에서는 [ic]inplace= True[/ic]일때와 [ic]False[/ic]일때 어떤 차이가 있는지 알아보자. 이 글과 읽으면 좋은글 [pytorch] transforms.Compose 사용 방법 [pytorch] ImageFolder 사용 방법 [pytorch] model.eval() vs torch.no_grad() 차이 1) [ic]inplace=False[/ic] 인경우 import torch import torch.nn as nn to.. 머신러닝,딥러닝/딥러닝 2022. 12. 23. [pytorch] model.eval() vs torch.no_grad() 차이 model.eval(), torch.no_grad() 둘다 train할때 사용 되지 않는다는점에서 공통점이 있다. 이 때문에 막연히 비슷한 기능을 한다고 착각하기 쉽다. 이번 포스팅에선 둘의 기능 차이에 대해 알아보자. 1) model.eval() nn.Module 클래스 메소드다. 이 친구는 training할때 유용한 기능(dropout, batch-normalization)을 작동하지 않게 해준다. 참고로 dropout은 오버피팅을 방지하고 batch-normalization은 generalization을 향상시켜준다. 이 기능을 inference할때 쓰게 된다면 오히려 성능이 하락된다. 2) torch.no_grad() 요즘엔 torch_no_grad() 대신 torch.inference_mode(.. 머신러닝,딥러닝/딥러닝 2022. 12. 21. [pytorch] ImageFolder 사용 방법 대용량 이미지 데이터를 데이터셋으로 관리하는데 편리한 모듈이 있다. 그 주인공은 Pytorch 에서 제공하는 ImageFolder다. 이 글을 읽기 전 선수 지식 포스팅 transforms.Compose 사용 방법 1) torchvision 설치 pip install torchvision ImageFolder는 기본 torch가 아니라 torchvision을 통해 제공된다. 2) 모듈 import from torchvision.datasets import ImageFolder 3) 사용 예제 예제 데이터구조 data 디렉토리를 기준으로 test, train 그 하위로 pizza, steak, sushi 디렉토리로 구성되어있다. ImageFolder를 사용하기 위해 기본적인 디렉토리 골격을 지켜줘야 한다... 머신러닝,딥러닝/딥러닝 2022. 12. 21. [pytorch] transforms.Compose 사용 방법 방대한 데이터 이미지를 한번에 변형 시킬 필요가 자주 있다. 이때 일일이 수작업으로 이미지를 변환한다면 리소스 낭비가 이만저만이 아닐거다. 이에 대한 해결책으로 torchvision.transforms.Compose 소개하고자 한다. 이번 포스팅은 transforms.Compose 사용방법과 이미지가 어떻게 변화되는지 눈으로 확인해볼거다. 1) 필요한 모듈 import from torchvision import transforms 2) transforms.Compose 정의 IMG_TRANSFORM = transforms.Compose([ transforms.Resize(size=(64, 64)), transforms.RandomHorizontalFlip(p=0.5), transforms.ToTensor.. 머신러닝,딥러닝/딥러닝 2022. 12. 21. AutoEncoder(오토인코더) 예제 코드 import torch from torchvision import transforms, datasets BATCH_SIZE = 64 trainset = datasets.FashionMNIST( root = './data/FASHIONMNIST/', # 저장할 공간 train = True, # 학습 여부 download = True, # downlaod 여부 transform = transforms.ToTensor() # Tensor로 타입 변환 ) trainloader = torch.utils.data.DataLoader( dataset = trainset, batch_size = BATCH_SIZE, shuffle = True, num_workers = 2 ) from torch import nn, o.. 머신러닝,딥러닝/딥러닝 2022. 12. 19. python 딥러닝 폴더 구조 쉽게 나누는 방법(with splitfolders) 데이터가 train, validation, test로 구분이 되어 있어야 보다 손쉽게 작업이 가능할 텐데요. 문제는 이러한 형태로 데이터셋이 구성되어 있지 않을 때가 많다는 것입니다. 이럴 경우 직접 수동으로 폴더 구조를 수정할 수 있지만 데이터가 코랩과 같은 클라우드에 있을 경우 상당히 번거로워 지죠. 이러한 문제를 해결하기 위한 툴로 splitfolders라는 툴을 소개하고자 합니다. 사용법을 설명하기 앞서 예제 데이터 셋에 대한 설명부터 하겠습니다. 1. 기본 데이터셋 설명 1) 예제 데이터 셋(https://www.kaggle.com/datasets/arunrk7/surface-crack-detection) 준비 캐글에서 다운로드한 파일을 코랩에 저장합니다. 압축된 상태 그대로 사용할 것이고, 코.. 머신러닝,딥러닝/딥러닝 2022. 11. 15. [딥러닝 기초] Dense layer 이전 글에서는 하나의 뉴런에 input의 데이터 차원이 변경됨(스칼라,벡터,행렬)에 따라 어떻게 연산이 되는지 알아보았다면, 이번 글에서는 뉴런이 vector 형태일때, 즉 뉴런이 여러개일때 연산이 어떻게 되는지 알아 보도록 하겠습니다. (참고로 뉴런이 vector 형태로 모여있는 형태를 layer라 부르고 layer는 뉴런이라는 함수가 여러 개있는 형태이기 때문에 vector function이라 불릴 수 있습니다.) Notation 정리 입력 데이터 1개일 경우 첫번째 input 데이터가 1번째 뉴런(첫번째 레이어에 속하는)에 들어가면 아래와 같은 연산 결과가 나옵니다. 다른 예로 아래와 같은 상황이라면, 이런식으로 각각의 뉴런마다 벡터연산을 모두 진행하는건 상당히 비효율적입니다. 이보다 각각의 벡터 .. 머신러닝,딥러닝/딥러닝 2022. 4. 20. 이전 1 2 다음