N-D T 类型张量的 BatchToSpace。
用法
tf.raw_ops.BatchToSpaceND(
input, block_shape, crops, name=None
)
参数
-
input
一个Tensor
。 N-D 形状为input_shape = [batch] + spatial_shape + remaining_shape
,其中 spatial_shape 具有 M 维。 -
block_shape
一个Tensor
。必须是以下类型之一:int32
,int64
。形状为[M]
的一维,所有值必须 >= 1。 -
crops
ATensor
.必须是以下类型之一:int32
,int64
.二维与形状[M, 2]
,所有值必须 >= 0。crops[i] = [crop_start, crop_end]
指定从输入维度裁剪的数量i + 1
, 对应于空间维度i
.要求crop_start[i] + crop_end[i] <= block_shape[i] * input_shape[i + 1]
.此操作等效于以下步骤:
将
input
重塑为reshaped
的形状:[block_shape[0], ..., block_shape[M-1], batch /prod(block_shape), input_shape[1], ..., input_shape[N-1] ]置换
reshaped
的尺寸以产生形状为[batch /prod(block_shape) 的permuted
,input_shape[1], block_shape[0], ..., input_shape[M], block_shape[M-1],
输入形状[M+1], ..., 输入形状[N-1]]
重塑
permuted
以产生形状为 [batch /prod(block_shape) 的reshaped_permuted
,input_shape[1] * block_shape[0], ..., input_shape[M] * block_shape[M-1],
输入形状[M+1], ..., 输入形状[N-1]]
根据
crops
裁剪reshaped_permuted
的维度[1, ..., M]
的开始和结束以产生shape的输出:[batch /prod(block_shape),input_shape[1] * block_shape[0] - 裁剪[0,0] - 裁剪[0,1], ..., input_shape[M] * block_shape[M-1] - 裁剪[M-1,0] - 裁剪[M-1,1],
输入形状[M+1], ..., 输入形状[N-1]]
一些例子:
(1) 对于以下形状
[4, 1, 1, 1]
,block_shape = [2, 2]
和crops = [[0, 0], [0, 0]]
的输入:[[[[1]]], [[[2]]], [[[3]]], [[[4]]]]
输出张量的形状为
[1, 2, 2, 1]
和值:x = [[[[1], [2]], [[3], [4]]]]
(2) 对于以下形状
[4, 1, 1, 3]
,block_shape = [2, 2]
和crops = [[0, 0], [0, 0]]
的输入:[[[[1, 2, 3]]], [[[4, 5, 6]]], [[[7, 8, 9]]], [[[10, 11, 12]]]]
输出张量的形状为
[1, 2, 2, 3]
和值:x = [[[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]]]
(3) 对于以下形状
[4, 2, 2, 1]
,block_shape = [2, 2]
和crops = [[0, 0], [0, 0]]
的输入:x = [[[[1], [3]], [[9], [11]]], [[[2], [4]], [[10], [12]]], [[[5], [7]], [[13], [15]]], [[[6], [8]], [[14], [16]]]]
输出张量的形状为
[1, 4, 4, 1]
和值:x = [[[[1], [2], [3], [4]], [[5], [6], [7], [8]], [[9], [10], [11], [12]], [[13], [14], [15], [16]]]]
(4) 对于以下形状
[8, 1, 3, 1]
,block_shape = [2, 2]
和crops = [[0, 0], [2, 0]]
的输入: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]]]]
输出张量的形状为
[2, 2, 4, 1]
和值:x = [[[[1], [2], [3], [4]], [[5], [6], [7], [8]]], [[[9], [10], [11], [12]], [[13], [14], [15], [16]]]]
-
name
操作的名称(可选)。
返回
-
一个
Tensor
。具有与input
相同的类型。
此操作将 "batch" 维度 0 重塑为形状 block_shape + [batch]
的 M + 1
维度,将这些块交错回到由空间维度 [1, ..., M]
定义的网格中,以获得与输入具有相同等级的结果。然后根据crops
选择性地裁剪此中间结果的空间维度以生成输出。这与 SpaceToBatch 正好相反。请参阅下面的详细说明。
相关用法
- Python tf.raw_ops.BatchToSpace用法及代码示例
- Python tf.raw_ops.BatchMatMul用法及代码示例
- Python tf.raw_ops.BatchFunction用法及代码示例
- Python tf.raw_ops.BatchMatMulV3用法及代码示例
- Python tf.raw_ops.BatchMatMulV2用法及代码示例
- Python tf.raw_ops.Bitcast用法及代码示例
- Python tf.raw_ops.BitwiseAnd用法及代码示例
- Python tf.raw_ops.BlockLSTM用法及代码示例
- Python tf.raw_ops.BlockLSTMV2用法及代码示例
- Python tf.raw_ops.BitwiseOr用法及代码示例
- Python tf.raw_ops.BitwiseXor用法及代码示例
- Python tf.raw_ops.BroadcastTo用法及代码示例
- Python tf.raw_ops.TPUReplicatedInput用法及代码示例
- Python tf.raw_ops.SelfAdjointEigV2用法及代码示例
- Python tf.raw_ops.OneHot用法及代码示例
- Python tf.raw_ops.ResourceScatterNdSub用法及代码示例
- Python tf.raw_ops.ReadVariableXlaSplitND用法及代码示例
- Python tf.raw_ops.GatherV2用法及代码示例
- Python tf.raw_ops.Expm1用法及代码示例
- Python tf.raw_ops.UniqueWithCounts用法及代码示例
注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.raw_ops.BatchToSpaceND。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。