[PyTorch] Tensor

hj choi·2022년 9월 26일
0

AI

목록 보기
6/27

Tensor

  • 다차원 Arrays를 표현하는 Pytorch 클래스
  • 사실상 numpy의 ndarray와 동일(그러므로 TensorFlow의 Tensor와도 동일)
  • Tensor를 생성하는 함수도 거의 동일
  • Python : list -> Numpy : Ndarray -> PyTorch : Tensor
  • numpy - ndarray
import numpy as np
n_array = np.arange(10).reshape(2,5)
print(n_array)
print('ndim :', n_array.ndim, 'shape :',n_array.shape)
  • pytorch - tensor
import torch
t_array = torch.FloatTensor(n_array)
print(t_array)
print('ndim :', t_array.ndim, 'shape :', t_array.shape)

Array to Tensor

  • Tensor 생성은 list나 ndarray를 사용 가능
  • data to tensor
data = [[3, 5],[10, 5]]
x_data = torch.tensor(data)
x_data
  • ndarray to tensor
nd_array_ex = np.array(data)
tensor_array = torch.from_numpy(nd_array_ex)
tensor_array
  • 딥러닝을 하면서 직접 데이터를 생성해서 다룰일은 거의 없음(거의 안쓰임)

Tensor data types

  • 기본적으로 tensor가 가질수 있는 data 타입은 numpy와 동일하다. numpy와의 한가지 차이점은 GPU를 쓸 수 있게 해준다는 것이다.

numpy like operations

  • 기본적으로 pytorch의 대부분의 사용법이 그대로 적용된다.
  • pytorch의 tensor는 GPU에 올려서 사용가능하다.

Tensor handling

  • view, squeeze, unsqueeze 등으로 tensor 조정가능

  • view : reshape과 동일하게 tensor의 shape을 변환

  • squeeze : 차원의 개수가 1인 차원을 삭제(압축)

  • unsqeeze : 차원의 개수가 1인 차원을 추가

  • view vs reshape

    • view를 사용해야된다고 기억하면 됨
    • view : 기존에 있던 값을(메모리 주소를) 그대로 사용해서 표현하는 형태만 바꿔줌
    • reshape : 계속해서 형태를 바꿔주는것을 보장하지않음(나중에 형태가 바뀔 수 있음)
  • squeeze, unsqeeze

Tensor operations

  • 기본적인 tensor의 operations는 numpy와 거의 동일하다.
  • 행렬곱셈 연산은 함수 dot이 아닌 mm을 사용한다.
  • mm은 broadcasting을 지원하지 않고, matmul은 broadcasting을 지원한다. broadcasting은 편리하지만 결과를 헷갈리게 할 수 있으므로 mm사용 권장

0개의 댓글