Tensor관련 함수와 메서드들

YoungJoon Suh·2022년 11월 1일
0

자료형 및 기기 선언과 변경
자료형은 선언시에는 다음과 같이 dtype을 사용하여 지정해줄 수 있습니다.
device = torch.device("cuda")
x = torch.tensor([[1, 2, 3], [4, 5, 6]], dtype=torch.int32, device=device)
여기서 tensor의 dtype이나 device를 바꾸는 방법은 torch.astensor를 사용하면 됩니다.
y = torch.as_tensor(x, dtype=torch.half, device='cpu')
또는 .to() method를 사용하는 방법도 있습니다.
y = x.to(device, dtype=torch.float64)
그 외에도 기기는 .cpu(), .cuda()로 기기를 변경할 수 있습니다.
자료형은 .half(), .float(), .double()로 변경할 수 있습니다.
torch.new_tensor로 다른 정보를 유지하면서 새로운 Tensor를 만들 수도 있습니다.
메서드 with underbar
언더바(
) 하나 차이인 torch.FloatTensor.abs_()가 있으면 torch.FloatTensor.abs()가 있습니다.
언더바가 있다면: in_place (새로운 tensor가 생기지 않고 기존 tensor 변경)
언더바가 없다면: 새로운 tensor를 리턴
대부분의 메소드는 언더바 버전이 있다.

복사의 수많은 방법: detach() & clone() & .data
detach()와 clone()은 기존 Tensor를 복사하는 방법 중 하나입니다.
detach(): 기존 Tensor에서 gradient 전파가 안되는 텐서 생성, 단 storage를 공유하기에 detach로 생성한 Tensor가 변경되면 원본 Tensor도 똑같이 변합니다.
clone(): 기존 Tensor와 내용을 복사한 텐서 생성
torch.squeeze(input, dim=None): returns a tensor with all the dimensions of input of size 1 removed.

profile
저는 서영준 입니다.

0개의 댓글