
631
17
기초부터 만드는 신경망
>>> c+m
tensor([[11., 12., 13.],
[24., 25., 26.],
[37., 38., 39.]])
전과 같이 세 스칼라만 메모리에 저장됩니다.
>>> t = c.expand_as(m)
>>> t.storage()
10.0
20.0
30.0
[torch.FloatStorage of size 3]
그리고 스트라이드
0
은 열 차원에 적용되므로 확장된 텐서는 올바른 모양을 갖습니다.
>>> t.stride(), t.shape
((1, 0), torch.Size([3, 3]))
브로드캐스팅 시 새로운 차원을 추가하면 해당 차원은 앞쪽에 추가됩니다. 즉 앞서 본 브로드
캐스팅의 예에서는 파이토치가 내부적으로
c
.
unsqueeze
(
0
)
을 수행했습니다.
>>> c = tensor([10.,20,30])
>>> c.shape, c.unsqueeze(0).shape,c.unsqueeze(1).shape
(torch.Size([3]), torch.Size([1, 3]), torch.Size([3, 1]))
한편
unsqueeze
메서드는
None
색인 기법으로 대체할 수 있습니다.
>>> c.shape, c[None,:].shape,c[:,None].shape
(torch.Size([3]), torch.Size([1, 3]), torch.Size([3, ...