pytorch와 tensor의 정의

seung·2024년 8월 5일

pytorch

목록 보기
1/10

파이토치란 뭘까?

간편한 딥러닝 API를 제공하며 머신러닝 알고리즘을 구현하고 실행하기 위한 확장성이 뛰어난 멀티플랫폼 프로그래밍 인터페이스 이다.(사용자 친화성을 강조하고 복잡한 작업도 손쉽게 처리가능)
또한 연산을 평가하고, 계산을 실행하고, 구체적인 값을 즉시 반환하는 동적 계산 그래프이다.

파이토치 이전에 구글에서 만든 텐서플로우가 있었으나 지금은 거의 대부분이 파이토치를 사용한다.
(그렇다고 해서 텐서플로우를 몰라도 되느냐? 빠르게 변화하는 AI에서 공부하지 않아도 되는건 없다. 어떤 방식으로 굴러가는지 알아 두면 좋겠지!)

확장성이 뛰어나다(다양한 규모의 프로젝트에서 다양하게 적응할 수 있다.)
멀티플랫폼(windows,macOS,Linux 등 다양한 곳에서 사용 가능하다.)

파이토치는 어디서 사용되고 있을까?

테슬라 자율주행, 우버, 허깅페이스에 제공되는 AI모델들등등 다양하게 사용된다.


파이토치 아키텍처


파이토치는 이렇게 3-level로 나눌 수 있다. 각각의 층을 간략히 정리해보자!

  • TOP-level API(파이토치 API) : torch,torch.autograd(자동 미분 담당),torch.nn(neural network)등등
    다양한 api가 사용자에게 노출되고 사용자는 이것을 사용하게 된다.
  • Mid-level Engine: 텐서 연산을 도와주는 역할?
  • library level: 연산을 담당한다.(텐서를 담당하는 C, GPU를 담당하는 CUDA등 하드웨어와 연결되어 있다.)

** API(Application Programming Interface)
응용프로그램이 서로 상호작용하는데 사용하는 명령어, 함수, 프로토콜의 집합을 의미한다.

파이토치는 텐서 연산을 할 수 있게 해주는 거 같은데 tensor도 간략하게 정리해보자


tensor?

텐서란 파이토치의 핵심 데이터 구조로서, numpy의 다차원 배열과 유사한 형태로 데이터를 표현

  • 0-d(차원) tensor(scalr, 하나의 숫자)
    ex) torch.tensor(10)

  • 1-d(차원) tensor(vector, 순서가 지정된 벡터 구조)
    ex) torch.tensor([1,2,3,4,5])

  • 2-d(차원) tensor(matrix, 행과 열로 구성된 행렬 구조)
    ex) c=torch.tensor([[77, 114, 140, 191],
    [39, 56, 46, 119],
    [61, 29, 20, 33]])

    이차원 텐서를 예를 들어 그레이 스케일 이미지로 변환할 수 있다.

  • 3-d(차원) tensor
    ex) d=torch.tensor([[[255,0,0],
    [0,255,0]],
    [[0,0,255],
    [255,255,0]]])
    위에 처럼 해도 되지만 아래와 같이 해도 위와 같은 값을 가질 수 있다.
    red_channel = torch.tensor([[255, 0],
    [0, 255]])
    green_channel = torch.tensor([[0, 255],
    [0, 255]])
    blue_channel = torch.tensor([[0, 0],
    [255, 0]])

d = torch.stack((red_channel, green_channel, blue_channel), dim=2) #dimesion 2방향으로 3개의 채널을 합치겠다는 의미
3차원 텐서는 컬러이미지로 표현할 수 있다.

** 3차원 이상은 배운것처럼 계속 새로운 축을 배열하여 확장한다고 보면 된다.

0개의 댓글