아이공의 AI 공부 도전기

[Pytorch] torch.linspace 살펴보기(정의/예시)

 

 

 

이번 페이지에서는 torch.linspace에 대해 알아보도록 하겠습니다.

 

linspace는 linearly spaced vectors를 줄여쓴 글자로 우리가 원하는 시작점끝점에 해당하는 구역에 대해 동일한 간격으로 특정 갯수만큼의 벡터를 생성하는 것을 목적으로 합니다.

 

아래 URL을 각각 확인해보시면 torch.linspace는 numpy.linspace와 매우 유사한 형태임을 확인하실 수 있습니다.

 

torch.linspace : https://pytorch.org/docs/stable/generated/torch.linspace.html

 

torch.linspace — PyTorch 1.13 documentation

Shortcuts

pytorch.org

 

numpy.linsapce : https://numpy.org/doc/stable/reference/generated/numpy.linspace.html

 

numpy.linspace — NumPy v1.24 Manual

Return evenly spaced numbers over a specified interval. Returns num evenly spaced samples, calculated over the interval [start, stop]. The endpoint of the interval can optionally be excluded. Changed in version 1.20.0: Values are rounded towards -inf inste

numpy.org

 

정의

 

 

torch.linspace에서는 주로 start, end, steps에 해당하는 parameter를 필수적으로 같이 적어 linspace의 의미 그대로의 함수를 정의합니다. 만약 이 중 하나라도 없다면 실행되지 않습니다.

 

start : 시작하고자 하는 값

end : 종료하고자 하는 값

steps : 구성하고자 하는 tensor의 사이즈

 

물론 선택적으로 optional한 argument를 사용할 수도 있습니다.

output의 dtype을 변화한다던지, device 선택, requires_grad로 미분이 가능하게 만들지를 선택할 수 있죠.

 

 

예시

 

import torch

a = torch.linspace(start=3, end=5, steps=8)
# tensor([3.0000, 3.2857, 3.5714, 3.8571, 4.1429, 4.4286, 4.7143, 5.0000])
print(a)

b = torch.linspace(start=-10, end=10, steps=11)
# tensor([-10.,  -8.,  -6.,  -4.,  -2.,   0.,   2.,   4.,   6.,   8.,  10.])
print(b)

일반적인 예시와 같이 필수적인 start, end ,steps만으로도 충분히 활용가치가 높은 함수로 사용할 수 있습니다.

 

a에서 보이는 바와 같이 3으로 시작해서 5로 끝나는 일정한 간격의 8개의 숫자를 뽑아주세요가 첫번째 의미입니다.

 

b 역시 마찬가지로 -10에서 시작해서 10로 끝나는 일정한 간격의 11개의 숫자를 뽑아주세요가 두번째 의미입니다.

 

b = torch.linspace(start=-10, end=10, steps=11, dtype=torch.float64, device='cuda', requires_grad=True)
# tensor([-10,  -8,  -6,  -4,  -2,   0,   2,   4,   6,   8,  10], 
#        device='cuda:0', dtype=torch.float64, requires_grad=True)
print(b)

 

이 외 optional argument를 활용한 사용방식 또한 고려해볼 수 있습니다.

 

 

 

 

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading