반응형
pytorch 기초 사용법 (텐서 생성, 텐서 연산, 데이터셋 및 데이터 로더/Dataset, DataLoader)
0. 설명
# PyTorch는 딥러닝 연구 및 개발을 위한 오픈 소스 라이브러리로, Python 기반의 텐서 계산 및 GPU 가속화 지원, 자동 미분 및 최적화를 위한 도구를 제공합니다.
1. 설치
pip install torch
혹은 https://pytorch.org/ 참고하세요
2. 텐서 생성
- 0 텐서 생성
zeros_tensor = torch.zeros(3, 3)
- 1 텐서 생성
ones_tensor = torch.ones(3, 3)
- 랜덤 탠서 생성
random_tensor = torch.rand(3, 3)
- 리스트나, 넘파이 어레이 배열 to 텐서
import numpy as np
data = np.array([1, 2, 3])
tensor = torch.tensor(data)
3. 텐서 연산
- 텐서 덧셈
result = tensor1 + tensor2
- 텐서 곱셈
result = tensor1 * tensor2
- 행렬 곱셈
result = torch.matmul(tensor1, tensor2)
- 자동미분
x = torch.tensor(2.0, requires_grad=True)
y = x ** 2
y.backward() # 미분 계산
x.grad # dy/dx 값 확인
- 신경망구성
import torch.nn as nn
class MyNeuralNetwork(nn.Module):
def __init__(self):
super(MyNeuralNetwork, self).__init__()
self.layer1 = nn.Linear(10, 20)
self.layer2 = nn.ReLU()
self.layer3 = nn.Linear(20, 5)
def forward(self, x):
x = self.layer1(x)
x = self.layer2(x)
x = self.layer3(x)
return x
model = MyNeuralNetwork()
- 손실함수와 최적화 알고리즘 선택
loss_function = nn.CrossEntropyLoss()
optimizer = torch.optim.Adam(model.parameters(), lr=0.001)
- 훈련
for epoch in range(100):
# 예시: 입력 데이터와 정답 레이블
inputs = torch.randn(32, 10) # 배치 크기 32, 입력 크기 10
labels = torch.randint(0, 5, (32,)) # 정답 레이블
optimizer.zero_grad() # 기울기 초기화
outputs = model(inputs) # 모델의 예측 값 계산
loss = loss_function(outputs, labels)
4. 데이터셋 및 데이터로더
- 설명
# 데이터셋과 데이터 로더는 학습 및 평가 데이터를 효율적으로 불러오고,
# 학습 데이터를 구분하고 배치 처리를 수행하는 등 데이터 다루는데 필요한 일들에 도움을 줍니다.
- 라이브러리 이포트
import torch
from torch.utils.data import Dataset, DataLoader
- 사용자정의 데이터셋 생성
# Dataset 클래스를 상속받아 사용자 정의 데이터셋 클래스를 만들고,
# __getitem__ 및 __len__ 메서드를 구현해야 합니다.
class MyDataset(Dataset):
def __init__(self, data, labels):
self.data = data
self.labels = labels
def __getitem__(self, index):
x = self.data[index]
y = self.labels[index]
return x, y
def __len__(self):
return len(self.data)
- 데이터 셋 및 데이터 로더 인스턴스 생성
# 임의의 데이터와 레이블
data = torch.randn(100, 3, 32, 32) # 100개의 3x32x32 이미지
labels = torch.randint(0, 10, (100,)) # 100개의 정답 레이블
# 데이터셋 인스턴스 생성
my_dataset = MyDataset(data, labels)
# 데이터 로더 인스턴스 생성
data_loader = DataLoader(my_dataset, batch_size=10, shuffle=True)
- 데이터 로더를 사용한 배치 처리
for epoch in range(num_epochs):
for batch_idx, (inputs, targets) in enumerate(data_loader):
# 모델 학습 및 평가 코드 아래 입력
반응형
'python' 카테고리의 다른 글
Scipy 기초사용법 (최적화, 통계, 신호처리,선형대수) (2) | 2023.04.16 |
---|---|
pillow image rotate 검정색 공백 없이 파이썬 이미지 회전 (0) | 2023.04.15 |
파이썬 딕셔너리 json으로 저장하기, dict to json (0) | 2023.04.13 |
linear layer 방정식과 pytorch 예시 선형레이어 (deep learning) (0) | 2023.04.13 |
파이토치 최대값, 최소값 필터링 clamp() (2) | 2023.04.09 |
댓글