https://pytorch.org/docs/stable/tensors.html?highlight=tensor#torch.Tensor
Tensor class 사용할 수 있는 메서드 및 변수 정리
✔ 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]])
✔ 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]])
✔ steps를 size로 하고, start부터 end까지 동일한 비율로 분할된 Tensor
torch.linspace(-1, 1, steps=4)
>> tensor([-1.0000, -0.3333, 0.3333, 1.0000])
✔ 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]])
✔ Tensor.numel() 로도 사용 가능
✔ Tensor의 element 갯수 return
tmp = torch.randn(3,4)
tmp.numel()
>> 12
✔ 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])
✔ return empty Tensor
🤣 새로운 텐서를 만들 때 쓰는 것 같기는 한데, 왜 이걸 굳이...?
tmp = torch.randn([3, 4])
tmp.new()
>> tensor([])
tmp.new().shape
>> torch.Size([0])