アインシュタインの総和規則に従ったテンソル短縮。
一般化された Tensor の縮小と縮小を実装します。各入力テンソルには、方程式の左側にカンマで区切られた対応する入力添字が含まれている必要があります。方程式の右側は出力の添字で構成されます。入力添字と出力添字は、0 個以上の名前付き軸ラベルと最大 1 つの省略記号 (`...`) で構成されている必要があります。
名前付き軸ラベルは、特別な意味を持つ文字、つまり `,.->` を除く任意の 1 文字にすることができます。この Op が不適切な形式の方程式を受け取った場合の動作は未定義です。検証はグラフ構築時に行われるため、実行時の形式検証チェックは省略します。
注: この Op はユーザーが呼び出すことを意図したものではありません。代わりに、ユーザーはtf.einsum
直接呼び出す必要があります。これは、 tf.einsum
によって使用される非表示の Op です。
操作は、次のルールに従って入力に適用されます。
(a) 一般化された対角線: 同じ入力添え字に複数回出現する軸ラベルに対応する入力次元については、一般化された (`k` 次元) 対角線を使用します。たとえば、入力形状 `[3, 3, 3]` を持つ方程式 `iii->i` では、一般化対角線はインデックス `(0, 0, 0)`、`(1) の `3` 要素で構成されます。 , 1, 1)` と `(2, 2, 2)` を使用して、形状 `[3]` のテンソルを作成します。
(b) リダクション: 1 つの入力添字にのみ現れ、出力添字には現れないラベルに対応する軸は、Tensor 短縮の前に合計されます。たとえば、方程式 'ab,bc->b' では、軸ラベル 'a' と 'c' がリダクション軸ラベルです。
(c) バッチ次元: 入力添字のそれぞれと出力添字に現れるラベルに対応する軸は、テンソル短縮におけるバッチ次元を構成します。省略記号 (`...`) に対応する名前のない軸ラベルもバッチ ディメンションに対応します。たとえば、バッチ行列乗算を表す方程式「bij,bjk->bik」の場合、軸ラベル「b」はバッチ次元に対応します。
(d) 縮小: バイナリ einsum の場合、2 つの異なる入力 (出力ではなく) に現れるラベルに対応する軸は、相互に縮小されます。もう一度バッチ行列乗算方程式 (`bij,bjk->bik`) を考えると、縮約された軸ラベルは `j` になります。
(e) 対角展開: 出力添字に繰り返しの (明示的な) 軸ラベルが含まれる場合、(a) の逆の操作が適用されます。たとえば、方程式 `i->iii` および入力形状 `[3]` では、形状 `[3, 3, 3]` の出力は、次のように入力される (一般化された) 対角線を除いてすべて 0 です。入力からの値。注: この操作は、「np.einsum」またはtf.einsum
ではサポートされていません。これは、 tf.einsum
のシンボリック勾配を計算できるようにするために提供されています。
出力添字には、入力添字の少なくとも 1 つに出現するラベルのみが含まれている必要があります。さらに、同じ軸ラベルにマッピングされるすべての次元が等しい必要があります。
入力および出力の添字には、最大 1 つの省略記号 (`...`) を含めることができます。これらの省略記号は、名前付き軸ラベルに対応しない次元に対してマップされます。 2 つの入力に省略記号が含まれている場合、それらは標準の NumPy ブロードキャスト [ルール](http://docs.scipy.org/doc/numpy/user/basics.broadcasting.html) に従ってブロードキャストされます。
ブロードキャストされたディメンションは、出力添字の省略記号の対応する位置に配置されます。ブロードキャストされたディメンションが空ではなく、出力添字に省略記号が含まれていない場合、InvalidArgument エラーが発生します。
定数
弦 | OP_NAME | TensorFlow コア エンジンによって認識される、この演算の名前 |
パブリックメソッド
出力<T> | asOutput () テンソルのシンボリック ハンドルを返します。 |
static <T extends TType > Einsum <T> | |
出力<T> | 出力() 「方程式」に応じた形状を持つ出力テンソル。 |
継承されたメソッド
定数
パブリック静的最終文字列OP_NAME
TensorFlow コア エンジンによって認識される、この演算の名前
パブリックメソッド
public Output <T> asOutput ()
テンソルのシンボリック ハンドルを返します。
TensorFlow オペレーションへの入力は、別の TensorFlow オペレーションの出力です。このメソッドは、入力の計算を表すシンボリック ハンドルを取得するために使用されます。
public static Einsum <T> create (スコープスコープ、Iterable<オペランド<T>> 入力、文字列方程式)
新しい Einsum オペレーションをラップするクラスを作成するファクトリ メソッド。
パラメーター
範囲 | 現在のスコープ |
---|---|
入力 | 1 つまたは 2 つのテンソルのリスト。 |
方程式 | Einstein Summation 演算を説明する文字列。 np.einsum の形式。 |
戻り値
- Einsum の新しいインスタンス