Einsum

공개 최종 수업 Einsum

아인슈타인 합산 규칙에 따른 텐서 수축.

일반화된 Tensor 축소 및 축소를 구현합니다. 각 입력 텐서에는 방정식의 왼쪽에 쉼표로 구분된 해당 입력 첨자가 나타나야 합니다. 방정식의 우변은 출력 첨자로 구성됩니다. 입력 첨자와 출력 첨자는 0개 이상의 명명된 축 레이블과 최대 1개의 줄임표(`...`)로 구성되어야 합니다.

명명된 축 레이블은 `,.->`와 같은 특별한 의미를 갖는 문자 이외의 단일 문자일 수 있습니다. 형식이 잘못된 방정식을 수신하는 경우 이 Op의 동작은 정의되지 않습니다. 유효성 검사는 그래프 작성 시 수행되므로 런타임 시 형식 유효성 검사를 생략합니다.

참고: 이 작업은 사용자가 호출할 수 없습니다 . 대신 사용자는 tf.einsum 직접 호출해야 합니다. tf.einsum 에서 사용하는 숨겨진 Op입니다.

작업은 다음 규칙에 따라 입력에 적용됩니다.

(a) 일반화된 대각선: 동일한 입력 첨자에서 두 번 이상 나타나는 축 레이블에 해당하는 입력 차원의 경우 일반화된(`k` 차원) 대각선을 사용합니다. 예를 들어, 입력 모양 `[3, 3, 3]`을 갖는 방정식 `iii->i`에서 일반화된 대각선은 인덱스 `(0, 0, 0)`, `(1)에서 `3` 요소로 구성됩니다. , 1, 1)` 및 `(2, 2, 2)`를 사용하여 `[3]` 모양의 Tensor를 생성합니다.

(b) 감소: 하나의 입력 첨자에만 표시되고 출력 첨자에는 나타나지 않는 레이블에 해당하는 축은 Tensor 수축 이전에 합산됩니다. 예를 들어 방정식 `ab,bc->b`에서 축 레이블 `a` 및 `c`는 축소 축 레이블입니다.

(c) 배치 차원: 각 입력 첨자 및 출력 첨자에 나타나는 레이블에 해당하는 축이 텐서 수축의 배치 차원을 구성합니다. 줄임표(`...`)에 해당하는 명명되지 않은 축 레이블은 배치 차원에도 해당합니다. 예를 들어 배치 행렬 곱셈을 나타내는 방정식 `bij,bjk->bik`의 경우 축 레이블 `b`는 배치 차원에 해당합니다.

(d) 수축: 이진 Einsum의 경우 두 개의 서로 다른 입력(출력이 아닌)에 나타나는 레이블에 해당하는 축이 서로 수축됩니다. 다시 배치 행렬 곱셈 방정식(`bij,bjk->bik`)을 고려하면 축소된 축 레이블은 `j`입니다.

(e) 대각선 확장: 출력 첨자에 반복되는(명시적인) 축 레이블이 포함된 경우 (a)의 반대 작업이 적용됩니다. 예를 들어, 방정식 `i->iii` 및 입력 모양 `[3]`에서 `[3, 3, 3]` 모양의 출력은 다음으로 채워지는 (일반화된) 대각선을 제외하고 모두 0입니다. 입력의 값. 참고: 이 작업은 `np.einsum` 또는 tf.einsum 에서는 지원되지 않습니다. tf.einsum 의 기호적 기울기를 계산할 수 있도록 제공됩니다.

출력 첨자는 입력 첨자 중 하나 이상에 나타나는 레이블만 포함해야 합니다. 또한 동일한 축 레이블에 매핑되는 모든 차원은 동일해야 합니다.

입력 및 출력 첨자에는 최대 단일 줄임표(`...`)가 포함될 수 있습니다. 이러한 줄임표는 명명된 축 레이블에 해당하지 않는 차원에 매핑됩니다. 두 입력에 줄임표가 포함된 경우 표준 NumPy 방송 [규칙](http://docs.scipy.org/doc/numpy/user/basics.broadcasting.html)에 따라 방송됩니다.

브로드캐스트된 차원은 출력 아래 첨자에서 줄임표의 해당 위치에 배치됩니다. 브로드캐스트된 차원이 비어 있지 않고 출력 첨자에 줄임표가 포함되어 있지 않으면 InvalidArgument 오류가 발생합니다.

공개 방법

출력 <T>
출력 ()
텐서의 기호 핸들을 반환합니다.
정적 <T> Einsum <T>
생성 ( Scope 범위, Iterable< Operand <T>> 입력, 문자열 방정식)
새로운 Einsum 작업을 래핑하는 클래스를 생성하는 팩토리 메서드입니다.
출력 <T>
출력 ()
'방정식'에 따라 모양이 달라지는 출력 텐서.

상속된 메서드

공개 방법

공개 출력 <T> asOutput ()

텐서의 기호 핸들을 반환합니다.

TensorFlow 작업에 대한 입력은 다른 TensorFlow 작업의 출력입니다. 이 메서드는 입력 계산을 나타내는 기호 핸들을 얻는 데 사용됩니다.

public static Einsum <T> create ( Scope 범위, Iterable< Operand <T>> 입력, 문자열 방정식)

새로운 Einsum 작업을 래핑하는 클래스를 생성하는 팩토리 메서드입니다.

매개변수
범위 현재 범위
입력 1개 또는 2개의 텐서 목록.
방정식 Einstein Summation 작업을 설명하는 문자열입니다. np.einsum 형식입니다.
보고
  • Einsum의 새로운 인스턴스

공개 출력 <T> 출력 ()

'방정식'에 따라 모양이 달라지는 출력 텐서.