SpaceToBatchNd

パブリック最終クラスSpaceToBatchNd

T 型の ND テンソルの SpaceToBatch。

この操作は、入力の「空間」次元「[1, ..., M]」を形状「block_shape」のブロックのグリッドに分割し、これらのブロックを「バッチ」次元 (0) でインターリーブします。 、空間次元 `[1, ..., M]` はグリッド内の位置に対応し、バッチ次元は空間ブロック内の位置と元のバッチ位置の両方を組み合わせます。ブロックに分割する前に、入力の空間次元はオプションで「パディング」に従ってゼロ埋めされます。正確な説明については、以下を参照してください。

この操作は次の手順と同等です。

1. 入力の次元 `[1, ..., M]` の開始点と終了点を `paddings` に従ってゼロ埋めして、形状 `padded_shape` の `padded` を生成します。

2. `padded` を形状の `reshape_padded` に再形成します。

[バッチ] + [パッド形状[1] / ブロック形状[0], ブロック形状[0], ..., パッド形状[M] / ブロック形状[M-1], ブロック形状[M-1]] + 残りの形状

3. `reshape_padded` の寸法を並べ替えて、形状の `permuted_reshape_padded` を生成します。

ブロック形状 + [バッチ] + [パッド形状[1] / ブロック形状[0], ..., パッド形状[M] / ブロック形状[M-1]] + 残りの形状

4. `permuted_reshape_padded` を再形成して、`block_shape` をバッチ次元に平坦化し、形状の出力テンソルを生成します。

[バッチ * prod(block_shape)] + [詰め込み形状[1] / ブロック形状[0], ..., 詰め込み形状[M] / ブロック形状[M-1]] + 残りの形状

いくつかの例:

(1) 以下の形状 `[1, 2, 2, 1]`、`block_shape = [2, 2]`、および `paddings = [[0, 0], [0, 0]]` の入力の場合:

x = [[[[1], [2]], [[3], [4]]]]
 
出力テンソルは形状 `[4, 1, 1, 1]` と値を持ちます:
[[[[1]]], [[[2]]], [[[3]]], [[[4]]]]
 
(2) 次の形状 `[1, 2, 2, 3]` の入力の場合、`block_shape = [ 2, 2]`、および `padding = [[0, 0], [0, 0]]`:
x = [[[[1, 2, 3], [4, 5, 6]],
       [[7, 8, 9], [10, 11, 12]]]]
 
出力テンソルの形状は `[4, 1, 1, 3]` で、値は次のとおりです:
[[[[1, 2, 3]]], [[[4, 5, 6]]], [[[7, 8, 9]]], [[[10, 11, 12]]]]
 
(3) 以下の形状 `[1, 4, 4, 1]`、`block_shape = [2, 2]`、および `paddings = [[0, 0], [0, 0]]` の入力の場合:
x = [[[[1],   [2],  [3],  [4]],
       [[5],   [6],  [7],  [8]],
       [[9],  [10], [11],  [12]],
       [[13], [14], [15],  [16]]]]
 
出力テンソルは形状 `[4, 2, 2, 1]` と値を持ちます:
x = [[[[1], [3]], [[9], [11]]],
      [[[2], [4]], [[10], [12]]],
      [[[5], [7]], [[13], [15]]],
      [[[6], [8]], [[14], [16]]]]
 
(4) 次の形状 `[2, 2, 4, 1]` の入力の場合、block_shape = `[ 2, 2]`、およびパディング = `[[0, 0], [2, 0]]`:
x = [[[[1],   [2],  [3],  [4]],
       [[5],   [6],  [7],  [8]]],
      [[[9],  [10], [11],  [12]],
       [[13], [14], [15],  [16]]]]
 
出力テンソルの形状は `[8, 1, 3, 1]` で値:
x = [[[[0], [1], [3]]], [[[0], [9], [11]]],
      [[[0], [2], [4]]], [[[0], [10], [12]]],
      [[[0], [5], [7]]], [[[0], [13], [15]]],
      [[[0], [6], [8]]], [[[0], [14], [16]]]]
 
とりわけ、この操作は、異常な畳み込みを通常の畳み込みに減らすのに役立ちます。

パブリックメソッド

出力<T>
asOutput ()
テンソルのシンボリック ハンドルを返します。
static <T, U は数値を拡張、V は数値を拡張> SpaceToBatchNd <T>
create (スコープスコープ、オペランド<T> 入力、オペランド<U> blockShape、オペランド<V> パディング)
新しい SpaceToBatchNd オペレーションをラップするクラスを作成するファクトリ メソッド。
出力<T>

継承されたメソッド

パブリックメソッド

public Output <T> asOutput ()

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

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

public static SpaceToBatchNd <T> create (スコープスコープ、オペランド<T> 入力、オペランド<U> blockShape、オペランド<V> パディング)

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

パラメーター
範囲現在のスコープ
入力形状 `input_shape = [batch] + spatial_shape + Remaining_shape` の ND。spatial_shape の次元は `M` です。
ブロック形状形状 `[M]` の 1-D、すべての値は >= 1 でなければなりません。
パディング形状 `[M, 2]` の 2 次元、すべての値は >= 0 である必要があります。 `paddings[i] = [pad_start, Pad_end]` は、空間次元に対応する入力次元 `i + 1` のパディングを指定します「私」。 `block_shape[i]` は `input_shape[i + 1] + Pad_start + Pad_end` を除算する必要があります。
戻り値
  • SpaceToBatchNd の新しいインスタンス

public出力<T>出力()