警告:このAPIは非推奨であり、置き換えが安定した後 TensorFlowの将来のバージョンで削除される予定です。

Einsum

パブリックファイナルクラスアインサム

アインシュタインの縮約記法に従ったテンソルの縮約。

一般化されたテンソルの縮約と縮小を実装します。各入力テンソルには、方程式のコンマ区切りの左側に表示される対応する入力添え字が必要です。方程式の右辺は、出力添え字で構成されます。入力添え字と出力添え字は、0個以上の名前付き軸ラベルと最大1つの省略記号( `...`)で構成されている必要があります。

名前付き軸ラベルは、特別な意味を持つもの以外の任意の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] `のテンソルを作成します。

(b)削減:1つの入力添え字にのみ表示され、出力添え字には表示されないラベルに対応する軸は、テンソルの縮約の前に合計されます。たとえば、方程式 `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] `の出力は、(一般化された)対角線が入力されていることを除いて、すべてゼロです。入力からの値。注:この操作は、 `np.einsum`または` tf.einsum`ではサポートされていません。これは、 `tf.einsum`のシンボリック勾配の計算を可能にするために提供されています。

出力添え字には、入力添え字の少なくとも1つに表示されるラベルのみが含まれている必要があります。さらに、同じ軸ラベルにマッピングされるすべての寸法は等しくなければなりません。

入力および出力の添え字には、最大で1つの省略記号( `...`)を含めることができます。これらの省略形は、名前付き軸ラベルに対応しないディメンションに対してマップされます。 2つの入力に省略記号が含まれている場合、それらは標準のNumPyブロードキャスト[ルール](http://docs.scipy.org/doc/numpy/user/basics.broadcasting.html)に従ってブロードキャストされます。

ブロードキャストされたディメンションは、出力添え字の省略記号の対応する場所に配置されます。ブロードキャストされたディメンションが空ではなく、出力添え字に省略記号が含まれていない場合、InvalidArgumentエラーが発生します。

パブリックメソッド

出力<T>
asOutput ()
テンソルのシンボリックハンドルを返します。
静的<T>アインサム<T>
createスコープスコープ、Iterable <オペランド<T >>入力、文字列方程式)
新しいEinsum操作をラップするクラスを作成するファクトリメソッド。
出力<T>
出力()
`方程式`に依存する形状の出力テンソル。

継承されたメソッド

パブリックメソッド

public Output <T> asOutput ()

テンソルのシンボリックハンドルを返します。

TensorFlow操作への入力は、別のTensorFlow操作の出力です。このメソッドは、入力の計算を表すシンボリックハンドルを取得するために使用されます。

public static Einsum <T> create スコープスコープ、反復可能<オペランド<T >>入力、文字列方程式)

新しいEinsum操作をラップするクラスを作成するファクトリメソッド。

パラメーター
範囲現在のスコープ
入力1つまたは2つのテンソルのリスト。
方程式アインシュタインの総和演算を説明する文字列。 np.einsumの形式で。
戻り値
  • Einsumの新しいインスタンス

public Output <T> output ()

`方程式`に依存する形状の出力テンソル。