T 型の ND テンソルの SpaceToBatch。
この操作は、入力の「空間」次元「[1, ..., M]」を形状「block_shape」のブロックのグリッドに分割し、これらのブロックを「バッチ」次元 (0) でインターリーブします。 、空間次元 `[1, ..., M]` はグリッド内の位置に対応し、バッチ次元は空間ブロック内の位置と元のバッチ位置の両方を組み合わせます。ブロックに分割する前に、入力の空間次元はオプションで「パディング」に従ってゼロ埋めされます。正確な説明については、以下を参照してください。
この操作は次の手順と同等です。
1. `paddings` に従って入力の次元 `[1, ..., M]` の先頭と末尾をゼロで埋め込み、形状 `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]`、および `paddings = [[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]`、padding = `[[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> | |
出力<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 の新しいインスタンス