Main Content

tensorprod

두 텐서 간의 텐서 곱

R2022a 이후

설명

C = tensorprod(A,B,dimA,dimB)는 텐서 AB텐서 곱을 반환합니다. 인수 dimAdimBAB에서 축약할 차원을 지정하는 벡터입니다. 출력 텐서의 크기는 A의 축약되지 않은 차원의 크기와 B의 축약되지 않은 차원의 크기입니다.

예제

C = tensorprod(A,B,dim)AB 모두에서 같은 차원을 축약하도록 지정합니다.

예제

C = tensorprod(A,B)는 텐서 AB 간의 외적을 반환합니다. 이 구문은 dimA = dimB = [] 또는 dim = []과 함께 이전 구문 중 하나를 사용하는 것과 동일합니다. 출력 텐서의 크기는 [size(A) size(B)]입니다.

예제

C = tensorprod(A,B,"all")은 텐서 AB 간의 내적을 반환하며, 두 텐서는 크기가 같아야 합니다. 출력값은 스칼라입니다.

예제

C = tensorprod(___,NumDimensionsA=ndimsA)는 이전 구문에 나와 있는 입력 인수 조합 중 하나와 더불어 텐서 A의 차원 개수를 선택적으로 지정합니다. 출력값으로 전달해야 하는 후행 한원소 차원이 A에 있는 경우 이 옵션을 사용하십시오. 예를 들어, tensorprod(A,B,NumDimensionsA=4)는 텐서 AB 간의 외적을 계산하며, 여기서 A는 총 4개의 차원을 갖습니다.

예제

예제

모두 축소

임의의 요소로 구성된 두 개의 3차원 텐서를 만듭니다.

A = rand(3,2,5);
B = rand(2,4,5);

AB의 텐서 곱을 계산하고 A의 두 번째 차원과 B의 첫 번째 차원을 축약합니다. 결과로 생성된 텐서는 A의 축약되지 않은 차원과 B의 축약되지 않은 차원을 포함합니다.

C = tensorprod(A,B,2,1);
size(C)
ans = 1×4

     3     5     4     5

텐서 곱에서 여러 개의 차원을 축약하려면 축약할 차원을 벡터로 지정합니다. AB 간의 또 다른 텐서 곱을 계산하되, 이번에는 다음 두 차원을 축약합니다.

  • A의 두 번째 차원과 B의 첫 번째 차원을 축약합니다.

  • A의 세 번째 차원과 B의 세 번째 차원을 축약합니다.

D = tensorprod(A,B,[2 3],[1 3]);
size(D)
ans = 1×2

     3     4

임의의 요소로 구성된 두 개의 4차원 텐서를 만듭니다.

A = rand(7,3,6,5);
B = rand(9,3,4,5);

AB의 텐서 곱을 계산하고 각 텐서의 두 번째 차원과 네 번째 차원을 축약합니다. 결과의 크기를 확인합니다.

C = tensorprod(A,B,[2 4]);
size(C)
ans = 1×4

     7     6     9     4

임의의 요소로 구성된 두 개의 텐서를 만듭니다.

A = rand(3,2,3);
B = rand(4,4,3,3);

두 텐서의 외적을 계산합니다. 결과의 크기를 확인합니다.

C = tensorprod(A,B);
size(C)
ans = 1×7

     3     2     3     4     4     3     3

tensorprod는 두 텐서에 있는 요소의 모든 조합을 곱하므로 결과로 생성된 텐서의 크기는 [size(A) size(B)]와 같습니다.

임의의 요소로 구성되고 크기가 같은 두 개의 4차원 텐서를 만듭니다.

A = rand(4,4,3,2);
B = rand(4,4,3,2);

모든 차원을 축약하는 "all" 옵션을 지정하여 텐서의 내적을 계산합니다.

C = tensorprod(A,B,"all")
C = 
23.6148

임의의 요소로 구성된 두 개의 4차원 텐서를 만듭니다. A는 크기가 1인 후행 차원을 가지며, MATLAB®은 일반적으로 이를 무시합니다.

A = rand(3,4,5,1);
B = rand(4,5,6,7);

AB의 텐서 곱을 계산하고 A의 두 번째 차원 및 세 번째 차원과 B의 첫 번째 차원 및 두 번째 차원을 축약합니다. MATLAB은 A의 후행 한원소 차원을 무시하므로 결과는 3개의 차원만 갖습니다.

C = tensorprod(A,B,[2 3],[1 2]);
size(C)
ans = 1×3

     3     6     7

A에서 한원소 차원을 유지하려면 NumDimensionsA 옵션을 사용하여 A의 차원 수를 지정합니다. 이제 결과는 4개의 차원을 갖습니다.

D = tensorprod(A,B,[2 3],[1 2],NumDimensionsA=4);
size(D)
ans = 1×4

     3     1     6     7

입력 인수

모두 축소

입력 텐서로, 배열로 지정됩니다. tensorprod는 계산 중에 복소수 입력값을 켤레화하지 않습니다. 켤레화가 필요한 경우에는 conj(A) 또는 conj(B)를 사용하여 복소수 입력값을 tensorprod에 전달하기 전에 켤레화하십시오.

데이터형: single | double
복소수 지원 여부:

AB에서 축약할 차원으로, 벡터로 지정됩니다. dimAdimB는 길이가 동일해야 하며 대응하는 요소끼리 쌍을 이룹니다. 축약된 차원의 크기도 일치해야 하므로 size(A,dimA)size(B,dimB)와 같아야 합니다.

예: tensorprod(A,B,[1 3],[2 4])A의 첫 번째 차원과 B의 두 번째 차원을 축약하고, A의 세 번째 차원과 B의 네 번째 차원을 축약합니다.

데이터형: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

AB 모두에서 축약할 차원으로, 벡터로 지정됩니다. 축약된 차원의 크기가 일치해야 하므로 size(A,dim)size(B,dim)과 같아야 합니다.

예: tensorprod(A,B,[1 3])A의 첫 번째 차원과 B의 첫 번째 차원을 축약하고, A의 세 번째 차원과 B의 세 번째 차원을 축약합니다.

데이터형: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

A의 차원 수로, 스칼라로 지정됩니다. 출력값으로 전달해야 하는 후행 한원소 차원이 A에 있는 경우 이 옵션을 사용하십시오.

예: tensorprod(A,B,NumDimensionsA=4)는 텐서 AB 간의 외적을 계산하며, 여기서 A는 총 4개의 차원을 갖습니다.

세부 정보

모두 축소

내적

두 텐서의 내적은 dot에 의해 계산되는 벡터의 내적 연산을 일반화한 것입니다. 내적 연산(곱셈 후 덧셈)은 텐서의 모든 대응하는 차원에서 수행되므로 이 연산은 스칼라 값을 반환합니다. 이 연산을 수행하려면 텐서의 크기가 같아야 합니다.

예를 들어, 텐서 UV가 동일한 n개의 차원 (i, j, k, ..., n)을 가지는 경우 내적 tensorprod(U,V,"all")은 다음과 같은 합으로 지정됩니다.

nkjiUi,j,k,,nVi,j,k,,n=w

외적

텐서의 외적은 kron에 의해 계산되는 2차원 행렬의 크로네커 곱을 일반화한 것입니다. 두 텐서의 외적은 텐서의 요소의 모든 조합을 곱한 것입니다. 텐서의 차원이 축약되지 않기 때문에 출력값은 큰 텐서가 됩니다.

예를 들어, 텐서 U의 차원이 (i, j, k, ...)이고 텐서 V의 차원이 (l, m, n, ...)인 경우 외적 tensorprod(U,V)는 다음과 같이 지정됩니다.

Ui,j,k,Vl,m,n,=Wi,j,k,,l,m,n,

텐서 곱

텐서 곱은 내적과 외적 연산을 결합한 것입니다. 각 텐서에서 동일한 크기의 차원 쌍을 지정하여 내적을 통해 서로 축약되도록 할 수 있으며, 이러한 차원을 곱한 다음 더하여 차원 크기를 1로 줄입니다. 지정된 모든 차원이 축약된 후, 나머지 차원에 대해 텐서의 요소의 모든 조합을 곱하는 외적 연산이 수행됩니다.

예를 들어 텐서 U는 차원 (i, j, k)를 갖고 텐서 V는 차원 (i, j, m)을 갖는 경우 텐서 곱 tensorprod(U,V,[1 2])는 각 텐서의 처음 두 차원을 서로 축약하며, 결과는 차원 (k, m)을 갖습니다.

jiUi,j,kVi,j,m=Wk,m

확장 기능

버전 내역

R2022a에 개발됨

참고 항목

| | |

도움말 항목