본문 바로가기
728x90
반응형
SMALL

Python Library/PyTorch19

[PyTorch] 모델 매개변수 (Parameter) 모델 매개변수 (Parameter) 신경망 내부의 많은 계층들은 매개변수화 (parameterize)된다. 즉, 학습 중에 최적화되는 weight와 bias과 연관지어진다. nn.Module 을 상속하면 모델 객체 내부의 모든 필드들이 자동으로 추적 (track)되며, 모델의 parameters() 및 named_parameters() method로 모든 parameter에 접근할 수 있게 된다. 각 매개변수들을 순회하며 (iterate), 매개변수의 크기와 값을 출력한다. print("Model structure: ", model, "\n\n") for name, param in model.named_parameters(): print(f"Layer: {name} | Size: {param.size().. 2022. 1. 13.
[PyTorch] 모델 계층 (Layer) 모델 계층 (Layer) input_image = torch.rand(3,28,28) print(input_image.size()) # layer 확인 Out: torch.Size([3, 28, 28]) nn.Flatten nn.Flatten는 layer를 초기화하여 각 28x28의 2D image를 784 pixel 값을 갖는 연속된 array로 변환한다. (dim=0의 미니배치 차원은 유지) flatten = nn.Flatten() flat_image = flatten(input_image) print(flat_image.size()) Out: torch.Size([3, 784]) nn.Linear nn.Linear은 저장된 가중치 (weight)와 편향 (bias)을 사용하여 입력에 선형 변환 (l.. 2022. 1. 13.
[PyTorch] 신경망 모델 구성 신경망 모델 신경망은 데이터에 대한 연산을 수행하는 계층 (layer) / 모듈(module)로 구성되어 있다. torch.nn 네임스페이스는 신경망을 구성하는데 필요한 모든 구성 요소를 제공한다. PyTorch의 모든 module은 nn.Module 의 하위 클래스 (subclass)이다. 신경망은 다른 module (계층)로 구성된 module이다. 이 중첩된 구조는 복잡한 아키텍처를 쉽게 구축하고 관리할 수 있다. # FashionMNIST 데이터셋의 이미지들을 분류하는 신경망 import os import torch from torch import nn from torch.utils.data import DataLoader from torchvision import datasets, transfo.. 2022. 1. 13.
[PyTorch] 변형 (Transform) 변형 (Transform) 데이터가 항상 ML 알고리즘 학습에 필요한 최종 처리가 된 형태로 제공되지 않는다. 따라서, 변형 (transform)을 통해 데이터를 조작하고 학습에 적합하게 만든다. 모든 TorchVision 데이터셋들은 변형 logic을 갖는, 호출 가능한 객체 (callable)를 받는 매개변수 두 개 특징 (feature)을 변경하기 위한 transform 과 정답 (label)을 변경하기 위한 target_transform을 갖는다. torchvision.transforms 모듈은 주로 사용하는 몇 가지 transform을 제공한다. FashionMNIST의 feature은 PIL Image 형식이며, 정답 (label)은 정수 (integer)이다. 학습을 하려면 정규화 (norm.. 2022. 1. 13.
[PyTorch] DATASET / DATALOADER DATASET / DATALOADER 데이터 샘플을 처리하는 코드는 지저분(messy)하고 유지보수가 어려울 수 있다. 더 나은 가독성 (readability)과 모듈성 (modularity)을 위해 데이터셋 코드를 모델 학습 코드로부터 분리하는 것이 이상적다. PyTorch는 torch.utils.data.DataLoader와 torch.utils.data.Dataset의 두 가지 데이터 기본 요소를 제공하여 미리 준비해둔 (pre-loaded) 데이터셋 뿐만 아니라 가지고 있는 데이터를 사용할 수 있도록 한다. Dataset은 샘플과 정답 (label)을 저장하고, DataLoader는 Dataset을 샘플에 쉽게 접근할 수 있도록 순회 가능한 객체 (iterable)로 감싼다. PyTorch의 도메.. 2022. 1. 13.
[PyTorch] NumPy 변환 (Bridge) NumPy 변환 (Bridge) CPU 상의 tensor와 numpy array는 메모리 공간을 공유하기 때문에, 하나를 변경하면 다른 하나도 변경된다. # tensor를 numpy array로 변환하기 t = torch.ones(5) print(f"t: {t}") n = t.numpy() print(f"n: {n}") Out: t: tensor([1., 1., 1., 1., 1.]) n: [1. 1. 1. 1. 1.] tensor의 변경 사항이 numpy array에 반영된다. t.add_(1) print(f"t: {t}") print(f"n: {n}") Out: t: tensor([2., 2., 2., 2., 2.]) n: [2. 2. 2. 2. 2.] numpy array를 tensor로 변환하기 .. 2022. 1. 13.
[PyTorch] 텐서 속성 (Attribute) / 연산 (Operation) 속성 (Attribute) tensor = torch.rand(3,4) print(f"Shape of tensor: {tensor.shape}") print(f"Datatype of tensor: {tensor.dtype}") print(f"Device tensor is stored on: {tensor.device}") Out: Shape of tensor: torch.Size([3, 4]) Datatype of tensor: torch.float32 Device tensor is stored on: cpu tensor의 속성은 텐서의 모양 (shape), 자료형 (datatype) 및 어느 장치에 저장되는지를 나타낸다. 연산 (Operation) 전치 (transposing), 인덱싱 (indexin.. 2022. 1. 13.
[PyTorch] 텐서 (Tensor) 텐서 (Tensor) 텐서 (tensor)는 배열 (array)이나 행렬 (matrix)과 유사한 자료구조이다. pyrorch에서 tensor를 사용하여 모델의 입력 (input)과 출력 (output), 그리고 모델의 매개변수들을 부호화 (encode)한다. import torch import numpy as np tensor는 GPU나 다른 하드웨어 가속기에서 실행할 수 있다는 점만 제외하면 numpy의 ndarray와 유사하다. 실제로 tensor와 numpy array는 종종 동일한 내부 (underly) 메모리를 공유할 수 있어 데이터를 복사할 필요가 없다. tensor는 자동 미분 (automatic differentiation)에 최적화되어 있다. tensor 초기화 tensor는 여러가지 .. 2022. 1. 13.
파이토치 (PyTorch) 파이토치 (PyTorch) pytorch란 2016년에 발표된 DL을 구현을 위한 python 기반의 오픈소스 ML 라이브러리이다. ​이것은 Define by Run의 DL 구현 패러다임이 특징이다. Define and Run는 코드를 직접 돌리는 환경인 세션을 만들고, placeholder를 선언하고 이것으로 계산 그래프를 만들고 (define), 코드를 실행하는 시점에 데이터를 넣어 실행하는 (run) 방식이다. 이는 계산 그래프를 명확히 보여주면서 실행시점에 데이터만 바꿔줘도 되는 유연함을 장점으로 갖지만, 그 자체로 비직관적이다. 하지만 무엇보다 주목받는 이유중 하나는 간결하고 빠른 구현이다. tensorflow보다 사용자가 익히기 훨씬 쉽다는 특징이 있고 코드가 간결하고 난이도가 비교적 낮다고 .. 2022. 1. 13.
728x90
반응형
LIST