하루 하루
펭귄브로의 3분 딥러닝 파이토치맛_1일차 본문
파이토치 :딥러닝 프레임워크로 쉽게 GPU를 활용해서 인공신경망을 만들어 학습시킬 수 있도록 돕는다.
#1 텐서의 차원
import torch
x = torch.tensor([[1,2,3],[4,5,6],[7,8,9]])
x = torch.unsqueeze(x,0)
x = torch.squeeze(x,0)
print("size ", x.size)
print("shape", x.shape)
print("랭크", x.ndimension())
torch.unsqueeze() , torch.squeeze() , x.view 는 텐서의 원소 수를 유지하면서 모양과 차원을 바꿈
그래서 만약 원소 수와 다르게 모양이나 차원을 바꾸려고 하면 error가 발생한다.
#2 행렬의 연산
import torch
w = torch.randn(5,3,dtype = torch.float)
x = torch.tensor([[1.0,2.0],[3.0,4.0],[5.0,6.0]])
b = torch.randn(5,2,dtype = torch.float)
wx = torch.mm(w,x)
result = wx + b
# Autograd
경사하강법 : 예측 결과와 데이터의 정답의 오차를 표현한 함수f(x) 가 있을 때, f'(x)의 값을 통해서 오차의 값이 최소인 위치를 찾는 것
파이토치는 Autograd는 미분 계산을 자동화해서 경사하강법을 쉽게 구한다.
import torch
w = torch.tensor(1.0,requires_grad = True)
# requires_grad = True 이면 Autograd 계산 시 w 미분 값을 w.grad에 저장
a = w*2
l = a**2 + a
l.backward()
print('l을 w로 미분한 값은 {}'.format(w.grad))
#오염된 이미지를 복원
weird_function(원본이미지 ) = 오염된 이미지 일 때,
오염된 이미지와 weird_function( ) 으로 원본이미지 추출
-> random_tensor를 weird_function(random_tensor) = 오염된 이미지 일 때까지 생성
경사하강법을 20,000번 반복해서 얻은 이미지
for i in range(0,20000):
random_tensor.requires_grad_(True)
hypothesis = weird_function(random_tensor)
loss = distance_loss(hypothesis, broken_image)
loss.backward()
with torch.no_grad():
random_tensor = random_tensor-lr *random_tensor.grad
# 분류 모델 구현하기
1. 라이브러리 추가
- > torch, numpy, sklearn , matplotlib, torch.nn.functional
2. Data set 생성
-> sklearn의 make_blobs() 함수 이용
3. 생성된 데이터셋 시각화
-> matplotlib 을 이용해서 시각화
4. 데이터 셋을 파이토치 tensor로 변환
5. 신경망 모델 정의
6. 신경망 모델 생성 및 관련 변수와 알고리즘 정의
7. 학습 전 모델 성능 평가
8. 신경망 학습
9. 학습 후 모델 성능 평가
10. 학습된 가중치 저장
11. 저장된 가중치를 불러와 새로운 모델에 적용 ( 전이 학습 )
'IT > Artificial intelligence' 카테고리의 다른 글
펭귄브로의 3분 딥러닝 파이토치맛 _ 5일차 (0) | 2020.04.20 |
---|---|
펭귄브로의 3분 딥러닝 파이토치맛 _ 4일차 (0) | 2020.04.19 |
펭귄브로의 3분 딥러닝 파이토치맛 _ 3일차 (0) | 2020.04.17 |
TORCH.NN (0) | 2020.04.17 |
펭귄브로의 3분 딥러닝 파이토치맛 _ 2일차 (0) | 2020.04.17 |