주요 콘텐츠

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개의 차원을 갖습니다.

세부 정보

모두 축소

확장 기능

모두 확장

버전 내역

R2022a에 개발됨

참고 항목

| | |

도움말 항목