티스토리 뷰

  • PyTorch란 

NumPy를 대체하고 GPU의 힘을 사용

최고의 유연성과 속도를 제공하며 GPU 사용이 가능하기 때문에 속도에 가속성이 붙음

TensorFlow 보다 코드가 간결


  • PyTorch Project 구조

1. Load 'preprocessed Data'

2. Load Moel

3. Set Loss function(creterion) and Optimizer

4. Train Model

5. Display output (and graph) and save results


  • PyTorch 장점

1. 데이터 로드 시 DataLoader 라는 클래스 제공 DataLoader를 통해 데이터를 불러오면, 

이안에서 데이터 처리에 대한 거의 모든 것을 쉽게 수행 가능


2. 일반적인 모델을 불러올 때는 다른 Deep Learning Framework도 대체로 간결하지만, PyTorch는 torchvision이라는 패키지에서 따로 pretrain까지 된 모델들을 제공


  • Torch의 Tensor 선언

1. Tensor는 pytorch의 자료 형입니다.


2. Tensorsms 단일 데이터 타입으로 된 자료들의 다차원 행렬


3. Tensor는 간단한 명령어를 통해서 GPU로 연산을 수행하게 만들 수 있음


4. Tensor 변수 뒤에 .cuda()를 추가하면 사용 가능


  • Tensor의 선언

torch.Tensor(크기)

import torch


x = torch.randn(3,5)

print(x)


tensor([[ 2.4855e-01,  2.5019e+00, -1.0060e+00,  1.4615e+00,  6.0461e-01],

        [ 1.0805e+00,  1.1225e+00, -5.0888e-01,  2.2979e-01,  3.7677e-01],

        [ 1.5164e+00,  3.3740e-01,  1.4200e-04, -6.1642e-01,  4.2652e-01]])


  • Numpy 에서 Tensor로 바꿈

import torch

import numpy as np


a = np.array([1,2,3,4])

b = torch.Tensor(a)

print(b)


tensor([1., 2., 3., 4.])


  • Tensor에서 Numpy로 바꿈

import torch

import numpy as np


a = torch.rand(3,3)

b = a.numpy()

print(b)


[[0.0451827  0.9198697  0.21425855]

 [0.14947212 0.51675385 0.8633942 ]

 [0.59187156 0.59034705 0.7387198 ]]


  • Tensor의 형태 변환(view)

import torch


a = torch.rand(3,3)

a = a.view(1,1,3,3)

print(a)


tensor([[[[0.7842, 0.0957, 0.9225],

          [0.1336, 0.1266, 0.8179],

          [0.8014, 0.4205, 0.3005]]]])


  • Tensor 합치기

torch.cat((Tensor_A, Tensor_B), dim)


Tensor_A와 Tensor_B를 dim에 맞추서 합쳐줌 나중에 inception 모듈에 사용가능


import torch


a = torch.randn(1,1,2,2)

b = torch.randn(1,1,2,2)

c = torch.cat((a,b),0)

print(c)


tensor([[[[ 2.2905,  0.8008],

          [ 2.3070, -0.9003]]],



        [[[-0.6384,  1.8050],

          [ 0.2522, -1.1587]]]])



  • Tensor 계산을 GPU로

x와 y를 텐서 형태로 선언 선언된 x는 x.cuda y는 y.cuda를 GPU를 통해서 연산 가능

(내 컴퓨터엔 GPU가 없어서 회사 서버에서 돌려봄..!)


import torch


x = torch.rand(3,3)

y = torch.rand(3,3)

if torch.cuda.is_available():

    x = x.cuda()

    y = y.cuda()

    sum = x+y

print(sum)


tensor([[0.6465, 1.0060, 1.4261],

        [0.4249, 1.5580, 1.1309],

        [1.5778, 0.7042, 1.1634]], device='cuda:0')



참고한 유튜브 및 블로그

https://greeksharifa.github.io

https://www.youtube.com/channel/UCK24Wy_G-6V-quKvVRjflgA



'딥러닝 > PyTorch' 카테고리의 다른 글

PyTorch - 02. Autograd & Variable  (0) 2019.02.13
댓글
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31