Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

PyTorch에서 텐서를 어떻게 조인합니까?

<시간/>

torch.cat()을 사용하여 둘 이상의 텐서를 결합할 수 있습니다. 및 torch.stack() . torch.cat() 두 개 이상의 텐서를 연결하는 데 사용되는 반면 torch.stack() 텐서를 쌓는 데 사용됩니다. 0차원, -1차원과 같은 다른 차원의 텐서를 결합할 수 있습니다.

torch.cat() 둘 다 및 torch.stack() 텐서를 결합하는 데 사용됩니다. 그렇다면 이 두 가지 방법의 기본적인 차이점은 무엇입니까?

  • torch.cat() 기존 차원을 따라 일련의 텐서를 연결하므로 텐서의 차원이 변경되지 않습니다.

  • torch.stack() 새로운 차원을 따라 텐서를 쌓고 결과적으로 차원을 늘립니다.

단계

  • 필요한 라이브러리를 가져옵니다. 다음 모든 예에서 필수 Python 라이브러리는 torch입니다. . 이미 설치했는지 확인하십시오.

  • 두 개 이상의 PyTorch 텐서를 만들고 인쇄합니다.

  • torch.cat() 사용 또는 torch.stack() 위에서 생성한 텐서를 결합합니다. 특정 차원의 텐서를 결합하려면 차원(예:0, -1)을 제공하십시오.

  • 마지막으로 연결되거나 누적된 텐서를 인쇄합니다.

예시 1

# PyTorch에서 텐서를 결합하는 Python 프로그램# import required libraryimport torch# create tensorsT1 =torch.Tensor([1,2,3,4])T2 =torch.Tensor([0,3,4,1]) T3 =torch.Tensor([4,3,2,5])# 위 생성된 tensorsprint("T1:", T1)print("T2:", T2)print("T3:", T3)# 조인( concatenate) toch.cat()T =torch.cat((T1,T2,T3))# concatenationprint("T:",T) 후 최종 텐서를 인쇄합니다.

출력

위의 Python 3 코드를 실행하면 다음 출력이 생성됩니다.

T1:텐서([1., 2., 3., 4.])T2:텐서([0., 3., 4., 1.])T3:텐서([4., 3., 2., 5.])T:텐서([1., 2., 3., 4., 0., 3., 4., 1., 4., 3., 2., 5.]) 

예시 2

# 필요한 라이브러리 가져오기import torch# 텐서 생성T1 =torch.Tensor([[1,2],[3,4]])T2 =torch.Tensor([[0,3],[4,1]]) T3 =torch.Tensor([[4,3],[2,5]])# 생성된 tensorsprint("T1:\n", T1)print("T2:\n", T2)print("T3 :\n", T3)print("0 차원에서 텐서를 연결(연결)")T =torch.cat((T1,T2,T3), 0)print("T:\n", T)print( "-1 차원의 텐서 연결(연결)")T =torch.cat((T1,T2,T3), -1)print("T:\n", T)

출력

위의 Python 3 코드를 실행하면 다음 출력이 생성됩니다.

T1:텐서([[1., 2.], [3., 4.]])T2:텐서([[0., 3.], [4., 1.]])T3:텐서 ([[4., 3.], [2., 5.]]) 0 차원에서 텐서를 결합(연결)T:tensor([[1., 2.], [3., 4.], [0] ., 3.], [4., 1.], [4., 3.], [2., 5.]]) -1 차원에서 텐서를 결합(연결)T:tensor([[1., 2 ., 0., 3., 4., 3.], [3., 4., 4., 1., 2., 5.]])

위의 예에서 2D 텐서는 0 및 -1차원을 따라 연결됩니다. 0차원에서 연결하면 행 수가 증가하고 열 수는 변경되지 않습니다.

예시 3

# PyTorch에서 텐서를 결합하는 Python 프로그램# import required libraryimport torch# create tensorsT1 =torch.Tensor([1,2,3,4])T2 =torch.Tensor([0,3,4,1]) T3 =torch.Tensor([4,3,2,5])# 위의 생성된 tensorsprint를 인쇄합니다.print("T1:", T1)print("T2:", T2)print("T3:", T3)# 위의 조인 "torch.stack()"을 사용하는 텐서 print("join(stack) tensors")T =torch.stack((T1,T2,T3))# 조인 후 최종 텐서를 인쇄합니다.print("T:\n",T)print ("0 차원의 join(stack) 텐서")T =torch.stack((T1,T2,T3), 0)print("T:\n", T)print("join(stack) 텐서 -1 차원")T =torch.stack((T1,T2,T3), -1)print("T:\n", T)

출력

위의 Python 3 코드를 실행하면 다음 출력이 생성됩니다.

T1:텐서([1., 2., 3., 4.])T2:텐서([0., 3., 4., 1.])T3:텐서([4., 3., 2., 5.])join(스택) 텐서T:텐서([[1., 2., 3., 4.], [0., 3., 4., 1.], [4., 3. , 2., 5.]]) 0 차원의 텐서 조인(스택) T:tensor([[1., 2., 3., 4.], [0., 3., 4., 1.], [4., 3., 2., 5.]]) -1 차원의 텐서 조인(스택) T:tensor([[1., 0., 4.], [2., 3., 3.] , [3., 4., 2.], [4., 1., 5.]])

위의 예에서 1D 텐서는 누적되고 최종 텐서는 2D 텐서임을 알 수 있습니다.

예시 4

# 필요한 라이브러리 가져오기import torch# 텐서 생성T1 =torch.Tensor([[1,2],[3,4]])T2 =torch.Tensor([[0,3],[4,1]]) T3 =torch.Tensor([[4,3],[2,5]])# 생성된 tensorsprint("T1:\n", T1)print("T2:\n", T2)print("T3 :\n", T3)print("0 차원에서 (스택)텐서를 결합합니다.")T =torch.stack((T1,T2,T3), 0)print("T:\n", T)print( "-1 차원에서 텐서 연결(스택)")T =torch.stack((T1,T2,T3), -1)print("T:\n", T)

출력

위의 Python 3 코드를 실행하면 다음과 같은 출력이 생성됩니다.

T1:텐서([[1., 2.], [3., 4.]])T2:텐서([[0., 3.], [4., 1.]])T3:텐서 ([[4., 3.], [2., 5.]]) 0차원에서 (스택)텐서를 조인합니다.T:tensor([[[1., 2.], [3., 4.]], [[0., 3.], [4., 1.]], [[4., 3.], [2., 5.]]]) 텐서를 -1 차원으로 조인(스택) T:tensor( [[[1., 0., 4.], [2., 3., 3.]], [[3., 4., 2.], [4., 1., 5.]]]) 

위의 예에서 2D 텐서가 결합(스택)되어 3D 텐서를 생성하는 것을 알 수 있습니다.