PyTorch Section 2

최원빈·2023년 6월 27일
0

Pytorch studying

목록 보기
3/17
post-thumbnail

* 강사님의 자료는 저작권이 있기 때문에 배운 내용을 최대한 간단하게 정리하는 수준으로 작성하였습니다.

Part 1

PyTorch

  • 직관적 인터페이스 제공
  • 동적으로 그래프 생성 (vs 정적으로 그래프를 생성하는 Tensorflow)
  • 러닝 커브 (배우는 속도)가 낮은편

Tensorflow

  • 러닝 커브가 심함
  • 기존에 많은 코드가 Tensorflow 기반이므로, 참고자료가 많음

Part 2

Tensor 생성 주요 메서드

  • torch.zeros()
  • torch.ones()
  • torch.rand()
  • torch.randn()
  • torch.full((), a)
  • torch.zeros_like()
  • torch.ones_like()
  • torch.rand_like()
  • torch.randn_like()
  • torch.full_like()
  • torch.empty()

Torch 데이터 타입

  • torch.FloatTensor() \to 32-bit floating point
  • torch.DoubleTensor() \to 64-bit floating point
  • torch.HalfTensor() \to 16-bit floating point
  • torch.LongTensor() \to 64-bit integer
  • torch.IntTensor() \to 32-bit integer
  • torch.ShortTensor() \to 16-bit integer

Torch 형태, 차원, 데이터 타입 확인하는 방법

  • .shape(), .size() \to 형태 확인
  • .ndim, .dim() \to 차원 확인
  • .dtype \to 데이터 타입 확인

Part 2

Tensor 모양 변형

  • .reshape()
  • .view() \to 파이토치에서 더 자주 쓰임

Tensor 차원 압축

  • .squeeze() \to 차원이 1인 경우 해당 차원을 제거하는 용도로 사용
  • .unsqueeze() \to 특정 위치에 1인 차원 추가하기

Part 3

numpy & Pytorch

  • pytorch는 numpy의 ndarray를 GPU에서 실행할 수 있도록 개발됨
  • tensor와 ndarray 서로 변환 가능
    • data2 = torch.from_numpy(data)
    • data2.numpy()

브로드 캐스팅

  • 모양을 맞추기 위해 확대하여 계산
  • 조건
    • 각 차원의 원소 수가 똑같거나
    • 둘 중의 하나의 차원의 원소 수는 1이거나, 존재하지 않는 경우

텐서 복사

  • clone() : 기존 텐서 객체의 내용을 복사한 텐서 생성, 깊은 복사를 하여 저장 공간을 달리함
  • detach() : 기존 텐서 객체 그래프에서 분리된 텐서로 생성, clone 한것을 명시적으로 끊어주기 위해
    • Tensor가 기록을 추적하는 것을 끊을 수 있음
  • 둘이 자주 같이 쓰임

Part 4

Tensor 조건 연산

  • torch.where(data < 3) : 조건에 맞는 인덱스 번호 리턴
  • torch.where(data3, -1, 1) : 조건에 맞는 값을 특정 다른 값으로 변환

Tensor 파일로 저장하고, 불러오기

  • torch.save(data1, 'mydata1.pt') : pt를 많이 이용함
  • torch.load('mydata1.pt')

한 개 이상의 Tensor 저장

datas = {'data1' : data1, 'data2' : data2, 'data3' : data3}
torch.save(datas, 'mydata1.pt')

* written on June 27th

profile
차가운 머리와 따뜻한 마음

0개의 댓글