PyTorch - Tensor 다루기

JERRY·2025년 5월 19일

Deep Learning

목록 보기
24/35
post-thumbnail

Tensor 다루기

PyTorch에서는 Tensor type이 Variable과 Constant를 포함합니다.
기존에는 Variable 타입이 있었지만, 이는 자동미분을 위한 것이었는데, 이 기능을 Tensor 타입에 포함 시켰습니다.

기존의 데이터를 Torch의 Tensor로

torch의 Tensor의 속성값 확인

torch를 numpy 배열로

특정한 값의 Tensor 생성하기

난수 생성하기

데이터 타입


tensor_var.type() -> inplace 명령이 아님

GPU 사용하기

GPU 를 사용하기 위해 Cuda에서 사용하는 데이터타입으로 바꾸어줘야 한다.

방법 세가지!

  • 만들 때, device 설정해두기
  • tensor_var.cuda()
  • tensor_var.to(device)

대부분 그냥 이렇게 사용합니다!



텐서 연산

기본 연산

  • torch.add: 덧셈
  • torch.sub: 뺄셈
  • torch.mul: 곱셈
  • torch.div: 나눗셈
  • torch.pow: n 제곱
  • torch.nagetive: 음수 부호

  • torch.abs: 절대값
  • torch.sign: 부호
  • torch.round: 반올림
  • torch.ceil: 올림
  • torch.floor: 내림
  • torch.square: 제곱
  • torch.sqrt: 제곱근
  • torch.maximum: 두 텐서의 각 원소에서 최댓값만 반환.
  • torch.minimum: 두 텐서의 각 원소에서 최솟값만 반환.
  • torch.cumsum: 누적합
  • torch.cumprod: 누적곱

차원 축소 연산

PyTorch는 기본이 reduce 연산

행렬 연산

크기와 차원을 바꾸는 명령

  • torch.reshape
  • .view
  • torch.transpose

torch.view(a, (4, -1)) 이렇게 못씀

expand_dims 함수 대신에 unsqueeze 함수가 있다.

여러 함수가 torch.명령어 형태, tensor.명령어 로 사용 할 수 있다.

함수 끝에 _를 붙이면 inplace명령이 된다.(안되는 함수가 존재함)

transpose 하고 view 했을 때 이런 에러가 발생하기도 한다.

RuntimeError: view size is not compatible with input tensor's size and stride (at least one dimension spans across two contiguous subspaces). Use .reshape(...) instead.
이는 PyTorch가 데이터를 메모리에 저장하는 방식과 view, reshape, transpose 연산들이 연산을 수행하는 방식의 차이에 기인한다.
메모리상의 데이터의 물리적 위치와 index가 일치 할 때 contiguous 하다고 표현하는데, view는 contiguous해야만 연산을 수행할 수 있다.
이를 해결하기위해 tensor.contiguous() 함수를 호출하여 데이터를 정리해주면 된다.

형상 연산 중 유용한 것

indexing, slicing

텐서를 나누거나 두 개 이상의 텐서를 합치는 명령

나누는 연산

결합하는 연산

0개의 댓글