20210728 TIL

pytorch

x = torch.FloatTensor([[[1, 2]],
                       [[3, 4]]])
print(x.size())
y = x.expand(*[2, 3, 2])

print(y)
print(y.size())

print()
yy = x.expand(*[2, 4, 2])
# 차원 중에 1인 것만 expand가 가능하다.
print(yy)
print(yy.size())
y = torch.cat([x, x, x], dim=1)

print(y)
print(y.size())
x = torch.randperm(3**3).reshape(3, 3, -1)
# 27개(3,3,3) 랜덤하게 0부터 26까지
print(x)
print(x.size())
y = x.argmax(dim=-1)
# 마지막 dim을 기준으로 가장 큰 값이 있는 인덱스 반환
# 3,3 으로 차원 축소됨.
print(y)
print(y.size())
print()
print()
yy = x.argmax(dim=1)
# 마지막 dim을 기준으로 가장 큰 값이 있는 인덱스 반환
# 3,3 으로 차원 축소됨.
print(yy)
print(yy.size())
values, indices = torch.topk(x, k=1, dim=-1)
# top k개 뽑아달라! 
# sort가 된다
# value와 index를 return
print(values)
print(values.size())
print(indices)
print(indices.size())
# 차원 축소가 되지는 않고 k로 바뀜
# k가 1이었으니까 3,3,1

values2, indices2 = torch.topk(x, k=2, dim=-1)
# sort가 된다
# value와 index를 return
print(values2)
print(values2.size())
print(indices2)
print(indices2.size())
# 얘는 k가 2 였으니까 3,3,2 로 return됨.
print(x[1:3, :, :].size())
print(x[:, :1, :].size())
# 사이즈는 3,2가 아니라 3,1,2 이다. 이렇게 range로 들고 오면 해당 dim은 사라지지 않음.
print(x[:, :-1, :].size())
print(x[:, 0, :])
# 사이즈는 3,2
# range로 들고 온게 아니고 하나로 정해서 들고온거라 차원축소가 된다.

댓글을 작성해보세요.

채널톡 아이콘