TensorFlow:tf.space_to_depth函数

2018-01-30 09:54 更新

tf.space_to_depth 函数

space_to_depth(
    input,
    block_size,
    name=None,
    data_format='NHWC'
)

定义在:tensorflow/python/ops/array_ops.py.

参见指南:张量变换>分割和连接

T型张量的SpaceToDepth.

重新排列空间数据块,进入深度.更具体地说,该操作会输出输入张量的副本,其中来自维height和width维的值将移至该depth维.attr block_size表示输入块大小.

  • 不重叠的block_size乘block size大小的块,在每个位置重新排列成深度.
  • 输出张量的深度是block_size * block_size * input_depth.
  • 输入的每个块内的Y、X坐标成为输出通道索引的高阶分量.
  • 输入张量的高度和宽度必须能被block_size整除.

data_formatATTR用以下选项指定输入和输出张量的布局:“NHWC”:[ batch, height, width, channels ];“NCHW”:[ batch, channels, height, width ];“NCHW_VECT_C”:qint8 [ batch, channels / 4, height, width, channels % 4 ]

将操作视为转换6维张量是有用的.例如,对于data_format = NHWC,可以通过6个坐标指定输入张量中的每个元素,按照减小的存储器布局重要性排序为:n,oY,bY,oX,bX,iC(其中n =批索引,oX,oY表示X或输出图像中的Y坐标,bX,bY表示输入块内的坐标,iC表示输入通道).输出将是以下布局的转置:n,oY,oX,bY,bX,iC

这个操作对调整卷积之间的激活(但保留所有数据)是有用的,例如,而不是池.这对纯粹卷积模型的训练也很有用.

例如,给定一个形状的输入[1, 2, 2, 1],data_format =“NHWC”和block_size = 2:

x = [[[[1], [2]],
      [[3], [4]]]]

这个操作会输出一个形状为[1, 1, 1, 4]的张量:

[[[[1, 2, 3, 4]]]]

在这里,输入的批量为1,每个批量元素都有形状[2, 2, 1],相应的输出将有一个单一的元素(即宽度和高度均为1),并且将具有4个通道(1 * block_size * block_size)的深度.输出元素的形状是[1, 1, 4].

对于一个深度较大的输入张量,这里的形状[1, 2, 2, 3],例如:

x = [[[[1, 2, 3], [4, 5, 6]],
      [[7, 8, 9], [10, 11, 12]]]]

这个操作,对于2的block_size,将返回下面的形状为[1, 1, 1, 12]的张量:

[[[[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]]]]

同样,对于以下输入的形状[1 4 4 1],块大小为2:

x = [[[[1],   [2],  [5],  [6]],
      [[3],   [4],  [7],  [8]],
      [[9],  [10], [13],  [14]],
      [[11], [12], [15],  [16]]]]

操作将返回下面形状为[1 2 2 4]的张量:

x = [[[[1, 2, 3, 4],
       [5, 6, 7, 8]],
      [[9, 10, 11, 12],
       [13, 14, 15, 16]]]]

函数参数

  • input:一个Tensor.
  • block_size:一个>=2的int,表示空间块的大小.
  • data_format:可选的string,来自:"NHWC", "NCHW", "NCHW_VECT_C";默认为"NHWC".
  • name:操作的名称(可选).

函数返回

tf.space_to_depth函数返回Tensor,它与input具有相同的类型.

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy