ストライドスライス

パブリック最終クラスStridedSlice

`input` からストライドされたスライスを返します。

ほとんどの Python ユーザーは、この操作を直接使用するのではなく、Python の `Tensor.__getitem__` または `Variable.__getitem__` を使用したいと思うことに注意してください。

この演算の目的は、「n」次元の「入力」テンソルからの要素のサブセットを含む新しいテンソルを生成することです。サブセットは、この関数の引数にエンコードされた一連の「m」個のスパース範囲指定を使用して選択されます。場合によっては「m」が「n」と等しい場合もありますが、必ずしもそうである必要はないことに注意してください。各範囲指定エントリは次のいずれかになります。

- 省略記号 (...)。省略記号は、全次元選択の 0 個以上の次元を暗示するために使用され、`ellipsis_mask` を使用して生成されます。たとえば、`foo[...]` は ID スライスです。

- 新しい軸。これは新しいshape=1次元を挿入するために使用され、`new_axis_mask`を使用して生成されます。たとえば、`foo[:, ...]` (ここで、`foo` は形状 `(3, 4)`) は `(1, 3, 4)` テンソルを生成します。

- 範囲「begin:end:stride」。これは、特定のディメンションからどれだけ選択するかを指定するために使用されます。 `stride` は 0 以外の任意の整数です。 `begin` は選択する最初の値のインデックスを表す整数であり、`end` は選択する最後の値のインデックスを表します。各次元で選択される値の数は、「stride > 0」の場合は「end - begin」、「stride < 0」の場合は「begin - end」です。 `begin` と `end` は負の値にすることもできます。ここで、`-1` は最後の要素、`-2` は最後から 2 番目の要素です。 `begin_mask` は、明示的に指定された `begin` を、`stride > 0` の場合は暗黙的な有効値 `0`、`stride < 0` の場合は `-1` に置き換えるかどうかを制御します。 `end_mask` も同様ですが、最大の開いた間隔を作成するために必要な数を生成します。たとえば、形状 `(3,)` テンソル `foo[:]` が与えられた場合、有効な `begin` と `end` は `0` と `3` になります。これが、有効な `begin` と `end` が `0` と `2` である `foo[0:-1]` と同等であると想定しないでください。別の例は `foo[-2::-1]` です。これは、テンソルの最初の次元を反転し、最後の 2 次元を (元の順序の要素で) 削除します。たとえば、 `foo = [1,2,3,4]; foo[-2::-1]` は `[4,3]` です。

- 単一のインデックス。これは、特定のインデックスを持つ要素のみを保持するために使用されます。たとえば、 (形状 `(5,6)` テンソル上の `foo[2, :]` は、形状 `(6,)` テンソルを生成します。これは、`begin`、`end`、および `shrink_axis_mask` でエンコードされます。

各概念的範囲の指定は、op の引数にエンコードされます。このエンコーディングは、単純ではない例を考慮することで最も良く理解できます。特に、`foo[1, 2:4, None, ..., :-3:-1, :]` は

begin = [1, 2, x, x, 0, x] # x denotes don't care (usually 0)
 end = [2, 4, x, x, -3, x]
 strides = [1, 1, x, x, -1, 1]
 begin_mask = 1<<4 | 1<<5 = 48
 end_mask = 1<<5 = 32
 ellipsis_mask = 1<<3 = 8
 new_axis_mask = 1<<2 = 4
 shrink_axis_mask = 1<<0 = 1
 
としてエンコードされます。この場合、`foo.shape` が (5, 5, 5, 5, 5, 5) スライスの最終的な形状は (2, 1, 5, 5, 2, 5) になります。各引数の指定を段階的に見てみましょう。

1. スライス例の最初の引数は、`begin = 1` および `end = begin + 1 = 2` に変換されます。元の仕様 `2:4` とのあいまいさをなくすために、`shrink_axis_mask` に適切なビットも設定します。

2. `2:4` は、開始、終了、およびストライドに 2、4、1 を与えます。すべてのマスクにはゼロビットが含まれています。

3. None は `tf.newaxis` の同義語です。これは、最終的な形状にサイズ 1 の寸法を挿入することを意味します。 new_axis_mask ビットが設定されている間、ダミー値が begin、end、および stride に提供されます。

4. `...` は、入力形状のすべての次元のスライスを完全に指定するために、必要な数の次元から全範囲を取得します。

5. `:-3:-1` は負のインデックスの使用を示します。形状 's' を持つ次元に関連付けられた負のインデックス 'i' は、正のインデックス 's + i' に変換されます。したがって、`-1` は `s-1` (つまり、最後の要素) になります。この変換は内部で行われるため、begin、end、および strides は x、-3、および -1 を受け取ります。適切な begin_mask ビットは、開始範囲が全範囲であることを示すように設定されます (x は無視されます)。

6. 「:」は、対応するディメンションの内容全体が選択されていることを示します。これは `::` または `0::1` と同等です。 begin、end、strides はそれぞれ 0、0、1 を受け取ります。 `begin_mask` と `end_mask` の適切なビットも設定されます。

要件: `0 != strides[i] for i in [0, m)` `ellipsis_mask は 2 の累乗でなければなりません (省略記号は 1 つだけ)`

ネストされたクラス

クラスStridedSlice.Options StridedSliceのオプションの属性

パブリックメソッド

出力<T>
asOutput ()
テンソルのシンボリック ハンドルを返します。
静的StridedSlice.Options
beginMask (長い beginMask)
static <T, U extends Number> StridedSlice <T>
create (スコープscope、オペランド<T>入力、オペランド<U>開始、オペランド<U>終了、オペランド<U>ストライド、オプション...オプション)
新しい StridedSlice オペレーションをラップするクラスを作成するためのファクトリ メソッド。
静的StridedSlice.Options
ellipsisMask (長い省略マスク)
静的StridedSlice.Options
endMask (長い endMask)
静的StridedSlice.Options
newAxisMask (長い newAxisMask)
出力<T>
静的StridedSlice.Options
ShhrinkAxisMask (長い ShrinkAxisMask)

継承されたメソッド

パブリックメソッド

public Output <T> asOutput ()

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

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

public static StridedSlice.Options beginMask (Long beginMask)

パラメーター
beginマスクビット i が 1 であるビットマスクは、開始値を無視し、代わりに可能な最大の間隔を使用することを意味します。実行時に begin[i] は `stride[i] > 0` の場合は `[0, n-1)` に、`stride[i] < 0` の場合は `[-1, n-1]` に置き換えられます。

public static StridedSlice <T> create (スコープscope、オペランド<T>入力、オペランド<U>開始、オペランド<U>終了、オペランド<U>ストライド、オプション...オプション)

新しい StridedSlice オペレーションをラップするクラスを作成するためのファクトリ メソッド。

パラメーター
範囲現在のスコープ
始める`begin[k]` は、`k` 番目の範囲指定へのオフセットを指定します。これが対応する正確な次元はコンテキストによって決まります。範囲外の値はサイレントにクランプされます。 「begin_mask」の「k」番目のビットの場合、「begin[k]」は無視され、代わりに適切な次元の全範囲が使用されます。負の値を指定すると、インデックス付けは最上位の要素から開始されます。たとえば、`foo==[1,2,3]` の場合、`foo[-1]==3` となります。
終わり`end[i]` は `begin` と似ていますが、完全な範囲を決定するために `end_mask` が使用される点が異なります。
歩幅`strides[i]` は、指定された要素を抽出した後の `i` 番目の仕様の増分を指定します。負のインデックスを指定すると、元の順序が逆になります。範囲外の値は、スライス[i]>0の場合は[0,dim[i])、スライス[i] < 0の場合は[-1,dim[i]-1]にクランプされます。
オプションオプションの属性値を持ちます
戻り値
  • StridedSlice の新しいインスタンス

public static StridedSlice.Options ellipsisMask (長い省略マスク)

パラメーター
省略マスクビット「i」が 1 であるビットマスクは、「i」番目の位置が実際には省略記号であることを意味します。最大 1 ビットが 1 になります。「ellipsis_mask == 0」の場合、暗黙的な省略マスク「1 << (m+1)」が提供されます。これは、`foo[3:5] == foo[3:5, ...]` を意味します。省略記号は、すべての次元のスライス範囲を完全に指定するために、必要な数の範囲指定を暗黙的に作成します。たとえば、4 次元テンソル `foo` の場合、スライス `foo[2, ..., 5:8]` は `foo[2, :, :, 5:8]` を意味します。

public static StridedSlice.Options endMask (Long endMask)

パラメーター
エンドマスク「begin_mask」に類似

public static StridedSlice.Options newAxisMask (Long newAxisMask)

パラメーター
新しい軸マスクビット「i」が 1 であるビットマスクは、「i」番目の仕様が新しい形状 1 次元を作成することを意味します。たとえば、`foo[:4, tf.newaxis, :2]` は形状 `(4, 1, 2)` テンソルを生成します。

public出力<T>出力()

public static StridedSlice.Options shhrinkAxisMask (Long shrinxAxisMask)

パラメーター
縮小軸マスクビット「i」が「i」番目の仕様で次元を縮小する必要があることを意味するビットマスク。 begin と end は、ディメンション内のサイズ 1 のスライスを意味する必要があります。たとえば、Python では `foo[:, 3, :]` を実行すると、`shrink_axis_mask` は 2 になります。