Deep Learning & Machine Learning/PyTorch (8) 썸네일형 리스트형 [인프런 데이터과학 Part3]섹션1. 딥러닝 기본 배경지식(이론) 딥러닝은 가중치가 굉장하고 그 안에 아주 복잡한 식들이 있다. 그래서 그런 복잡한 구조에 입력을 넣어, 내가 원하는 예측값이 나오게 해야 하는데 어떻게 그 예측값이 나오게끔 할 것이냐.그 예측값과 실제 값의 차이를 기반으로 계산할 수 있는 오차값을 계산할 수 있는 loss function을 만든 다음에, 이를 기반으로 해서 핵심적으로 gradient descent 기법을 사용하여 업데이트해야 하는 변수 값을 편미분을 통해 업데이트 해나간다. 이 과정을 여러 번 반복하다 보면, 조금씩 조금씩 오차가 최소가 되는 지점에 가깝도록 딥러닝이 동작한다. 큰 그림으로 학습해야 할 딥러닝 과정 이해하기현실 세계의 데이터를 텐서(행렬)로 표현해야 한다, 즉 숫자 데이터로 변환해야 머신러닝/딥러닝 기술에 적용할 수 있.. [PyTorch] tutorial, 6.최적화(Optimization) 지금까지 모델과 데이터를 준비하는 단계가 완료되어, 데이터에 매개변수를 최적화하여 모델을 학습하고, 검증하고, 테스트를 해야 한다.모델을 학습하는 과정은 반복 과정을 거친다.즉, 각 반복 단계에서 모델은 출력을 추측하고, 추측과 정답 사이의 오류(손실, loss)를 계산하고, 매개변수에 대한 오류의 도함수(derivation)를 수집한 뒤, 경사하강법을 사용하여 이 파라미터들을 최적화(optimize)한다. 기본(Pre-requisite) 코드import torchfrom torch import nnfrom torch.utils.data import DataLoaderfrom torchvision import datasetsfrom torchvision.transforms import ToTensort.. [PyTorch] tutorial, 5.Autograd TORCH.AUTOGRAD 를 사용한 자동 미분 신경망 학습 시 가장 자주 사용되는 "역전파"라는 알고리즘에서, 매개변수(모델 가중치)는 주어진 매개변수에 대한 손실 함수의 변화도(gradient)에 따라 조정된다.여기서 변화도(gradient)를 계산하기 위해 PyTorch에는 torch.autograd 라는 자동 미분 엔진이 내장되어 있다.이로써, 모든 계산 그래프에 대한 변화도의 자동 계산을 지원한다.입력 x, 매개변수 w와 b, 그리고 일부 손실 함수가 있는 가장 간단한 단일 계층 신경망을 가정할 때, PyTorch에서는 다음과 같이 정의할 수 있다.import torchx = torch.ones(5) # input tensory = torch.zeros(3) # expected output.. [PyTorch] tutorial, 4.신경망 모델 구성하기 FashionMNIST 데이터셋의 이미지들을 분류하는 신경망을 구성해보고자 한다.import osimport torchfrom torch import nnfrom torch.utils.data import DataLoaderfrom torchvision import datasets, transforms 학습을 위한 장치 얻기device = ( "cuda" if torch.cuda.is_available() else "mps" if torch.backends.mps.is_available() else "cpu")print(f"Using {device} device") 클래스 정의하기신경망 모델을 nn.Module의 하위클래스로 정의하고, __init__ 에서 신경망 계층들을 초기.. [PyTorch] tutorial, 3.변형(Transform) 변형(Transform)머신러닝 알고리즘 학습에 필요한 데이터 형태로 제공하기 위하여, 변형(transform)을 통해 데이터를 조작하고 학습에 적합한 형태로 만들어주는 과정이 필요하다.모든 TorchVision 데이터셋들은 호출 가능한 객체(callable)를 받는 매개변수 두개를 가진다. transform: 특징(feature)을 변경하기 위함target_transform: 정답(label)을 변경하기 위함FashionMNIST 특징(feature)은 PIL image 형식이고, 정답(label)은 정수(integer)이다.따라서, 학습을 위해 정규화(normalize)된 텐서 형태의 feature과 one-hot으로 부호화(encode)된 텐서 형태의 label이 필요하다.이러한 변형(transfo.. [PyTorch] tutorial, 2.Dataset과 DataLoader PyTorch에서 제공하는 데이터셋으로 prototype 방식으로 모델을 만들고, 성능을 측정하여 benchmark 하는데 사용할 수 있다.torch.utils.data.Dataset: 샘플과 정답(label)을 저장한다torch.utils.data.DataLoader : Dataset을 샘플에 쉽게 접근할 수 있도록 순회 가능한 객체(iterable)로 감싼다 데이터셋 불러오기TorchVision의 Fashion-MNIST 데이터셋60,000개의 학습 샘플과 10,000개의 테스트 샘플로 구성각 샘플은 흑백(grayscale)의 28 x 28 이미지와 10개 분류(class) 중 하나인 정답(label)으로 구성FashionMNIST 데이터셋을 불러오는데 필요한 매개변수 예시root: 학습/테스트 데이.. [PyTorch] tutorial, 1.텐서(TENSOR) 텐서란?배열(array)이나 행렬(matrix)과 매우 유사한 특수 자료구조PyTorch에서는 텐서를 사용하여 모델의 입출력, 모델의 매개변수들을 부호화(encode)한다.GPU나 다른 하드웨어 가속기에서 실행할 수 있다는 점을 제외하면 Numpy의 ndarray와 유사하다.import torchimport numpy as np 텐서를 초기화할 수 있는 다양한 방법(1) 데이터로부터 직접(directly) 생성하기데이터로부터 직접 텐서 생성 가능하며, 데이터의 자료형(data type)은 자동으로 유추한다.data = [[1, 2],[3, 4]]x_data = torch.tensor(data)x_data.type Out: (2) Numpy 배열로부터 생성하기텐서를 Numpy 배열로 생성할 수도 있고, .. [PyTorch] tutorial, 0.빠른 시작(QUICKSTART) 1. 데이터 작업하기: torch.utils.data.DataLoader, torch.utils.data.Dataset 2. 모델 만들기: __init__, forward 3. 모델 매개변수 최적화하기: loss function, optimizer4. 모델 저장하기: torch.save5. 모델 불러오기: torch.load 데이터 작업하기PyTorch의 데이터 작업을 위한 기본 요소로는 두 가지가 있는데,하나는 torch.utils.data.Dataset, 또 다른 하나는 torch.utils.data.DataLoader 이다.Dataset = 샘플과 정답(label)을 저장한다.DataLoader = Dataset을 순회 가능한 객체(iterable)로 감싼다.import torchfrom torch.. 이전 1 다음