[pytorch] 함수 정리

강콩콩·2022년 3월 16일
0

pytorch

목록 보기
2/7
post-thumbnail

😎 pytorch 함수 정리

https://pytorch.org/docs/stable/tensors.html?highlight=tensor#torch.Tensor
Tensor class 사용할 수 있는 메서드 및 변수 정리

torch.randn(*size)

✔ input Tensor(tuple-like)를 shape으로 하는 난수로 채워진 Tensor

tmp = torch.randn([3, 4])
# or tmp = torch.randn(3, 4)

tmp
>> tensor([[-0.4221,  0.9803,  0.9709, -2.2323],
        [ 1.0770, -0.6775, -0.4542,  0.1675],
        [ 0.6363,  1.1525,  0.2529, -1.1079]])

torch.clamp(input, min=None, max=None, *, out=None)

✔ input의 element 값 중 min 이하는 min 값으로, max 이상은 max로 치환

tmp = torch.randn([3, 4])

tmp
>> tensor([[ 0.6003,  0.8507, -1.8844, -3.1290],
        [-1.0395, -0.0954, -1.3113,  1.3417],
        [ 0.3511,  1.0014,  0.0832,  0.8779]])
        
torch.clamp(tmp, min=-0.3, max=0.5)
>> tensor([[ 0.6003,  0.8507, -0.8000, -0.8000],
        [-0.8000, -0.0954, -0.8000,  1.0000],
        [ 0.3511,  1.0000,  0.0832,  0.8779]])

torch.linspace(start, end, steps)

(start,start+endstartsteps1,,start+(steps2)endstartsteps1,end)(start, start+\dfrac{end−start}{steps−1}​,…,start+(steps−2)∗\dfrac{end−start}{steps-1}​,end)

✔ steps를 size로 하고, start부터 end까지 동일한 비율로 분할된 Tensor

torch.linspace(-1, 1, steps=4)
>> tensor([-1.0000, -0.3333,  0.3333,  1.0000])

torch.index_select(input, dim, index)

✔ input Tensor의 index에 써져 있는 dim 차원 element만 선택 (index는 tuple-like)

x = torch.randn(3, 4)

x
>> tensor([[ 0.1392, -0.4403, -0.1479, -1.8080],
        [ 0.0270,  0.2358, -0.5572, -0.9726],
        [-0.0528,  0.0768, -1.2052, -1.3905]])
        
indices = torch.tensor([1, 2])

torch.index_select(x, 0, indices)
>> tensor([[ 0.0270,  0.2358, -0.5572, -0.9726],
        [-0.0528,  0.0768, -1.2052, -1.3905]])

indices = torch.tensor([2,])

torch.index_select(x, 0, indices)
>> tensor([[-0.0528,  0.0768, -1.2052, -1.3905]])

indices = torch.tensor([0, 1, 3])

torch.index_select(x, 1, indices)
>> tensor([[ 0.1392, -0.4403, -1.8080],
        [ 0.0270,  0.2358, -0.9726],
        [-0.0528,  0.0768, -1.3905]])

torch.numel()

✔ Tensor.numel() 로도 사용 가능
✔ Tensor의 element 갯수 return

tmp = torch.randn(3,4)

tmp.numel()
>> 12

torch.Tensor.sort(dim)

✔ Tensor의 dim 방향 오름차순 정렬
✔ return이 2개 : sorted된 Tensor / 변경된 index

tmp = torch.randn(10)

print(tmp)
print(tmp.sort(0)[0])
print(tmp.sort(0)[1])

>> tensor([ 1.4690,  1.0993,  0.2307,  0.6284, -0.5556, -2.2008,  1.3283,  0.2447,
         0.3749, -1.6137])
>> tensor([-2.2008, -1.6137, -0.5556,  0.2307,  0.2447,  0.3749,  0.6284,  1.0993,
         1.3283,  1.4690])
>> tensor([5, 9, 4, 2, 7, 8, 3, 1, 6, 0])

torch.new()

✔ return empty Tensor
🤣 새로운 텐서를 만들 때 쓰는 것 같기는 한데, 왜 이걸 굳이...?

tmp = torch.randn([3, 4])

tmp.new()
>> tensor([])

tmp.new().shape
>> torch.Size([0])
profile
MLOps, ML Engineer. 데이터에서 시스템으로, 시스템에서 가치로.

0개의 댓글