토치 텐서 반복 확장 대 반복 대 repeat_interleave 차이 확장

pytorch에서 텐서를 반복하고 확장하는 방법을 요약하겠습니다.

1) 토치.확장()

확장은 dim=1인 축만 가능하며, 형태를 입력으로 받습니다.

사용 예)


모양이 (1,2,2,3)인 텐서


희미한 0만 3배로 확장

여기서 1이 아닌 차원을 확장하려고 하면 런타임 오류가 발생합니다.


dim=2를 4로 확장하려고 하면 런타임 오류가 발생합니다.

해결 방법은 repeat 또는 repeat_interleave를 사용하는 것입니다.

cf) expand_as() : 참조) https://pytorch.org/docs/stable/generated/torch.Tensor.expand_as.html

참조) https://pytorch.org/docs/stable/generated/torch.Tensor.expand.html

2) 토치.반복()

입력 텐서를 하나씩 원하는 모양으로 쌓기만 하면 됩니다.

사용 예)


모양이 (1,2,2,3)인 텐서


0 dim에 대해 2x 반복


1 dim에 대해 두 번 반복

레트) https://pytorch.org/docs/stable/generated/torch.Tensor.repeat.html

3) 토치.반복_인터리브()

원하는 행별로 반복할 수 있으므로 numpy의 np.repeat처럼 사용할 수 있습니다.

사용 예)


모양이 (1,2,2,3)인 텐서


희미한 0에 대한 2배 확장


희미한 1에 대한 2배 확장

이렇게 사용하면 원하는 치수축을 반복적으로 확장할 수 있어 모델 피딩에 유용합니다.

참조) https://pytorch.org/docs/stable/generated/torch.repeat_interleave.html