PyTorch: 텐서
AI-PyTorch

텐서Tensor

PyTorch에서는 텐서Tensor를 사용해 모델의 입출력 및 매개변수로 사용되는 데이터를 부호화한다.

텐서는 기본적으로 넘파이 어레이와 매우 유사하지만, GPU나 다른 하드웨어 가속기에서 실행해 성능을 향상시킬 수 있다.

또한 텐서의 자동 미분 기능은 역전파 단계에서 가중치와 편향의 기울기Gradient를 자동으로 추적하도록 지원한다.

텐서 생성

  • 주어진 데이터로부터 텐서를 생성한다.

    🧶torch.tensor() 함수는 파이썬 리스트 또는 넘파이 어레이를 텐서로 변환한다.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    # 파이썬 리스트 -> 텐서
    a = [1, 2, 3]
    t_a = torch.tensor(a)
    print(t_a)
        
    # 넘파이 어레이 -> 텐서
    b = np.array([4, 5, 6], dtype=np.int32)
    t_b = torch.from_numpy(b)
    print(t_b)
    

    실행 결과

    1
    2
    
    tensor([1, 2, 3])
    tensor([4, 5, 6], dtype=torch.int32)
    
  • 특정 값으로 이루어진 텐서를 생성한다.

    🧶
    torch.ones(shape) 1
    torch.zeros(shape) 0
    torch.rand(shape) [0, 1) 범위의 난수(균등 분포)
    torch.randn(shape) [0, 1) 범위의 난수(정규 분포)

텐서의 속성

생성된 텐서 객체는 모양(shape), 데이터 타입(dtype), 저장 장치(device)의 3가지 속성을 가진다.

객체 생성 시 매개변수(dtype, device)를 지정하면 데이터 타입 및 저장 장치를 설정할 수 있다.

텐서의 속성에 접근하려면 🧶tensor.shape, tensor.dtype, tensor.device를 사용한다.

1
2
3
4
5
device = "cuda" if torch.cuda.is_available() else "cpu"

c = [7, 8, 9]
t_c = torch.tensor(c, device=device)
print(t_c.device)

📌REF