「五分钟学习Tensorflow」tf.nn.depth

一、原理

  • 函数原型
<code>tf.depth_to_space(input, block_size, data_format="NHWC", name=None)/<code>

从深度上将数据重新排列为空间数据块,与pytorch的pixelshuffle函数实现了相同的功能。输入张量与输出张量在维度上的转换为:

<code>Input:[N, H, W, C]Output:[N, H*block_size, W*block_size, C/(block_size*block_size)]/<code>

其中 C 需要是block_size平方的整数倍。

  • 执行过程

下图展示了当Input 为 [2, 2, 8],block_size = 2, data_format = "NHWC" 时的运算过程,我们知道,对于"NHWC"这种方式,数据在内存中的存储如下图所示,以深度->宽度->高度的顺序来存储,对于Input为[2, 2, 8]的例子,取出第一行第一列的8个深度上的数据,然后reshape为[2, 2, 2],一共有4个[2, 2, 2]的块,以块为单位做矩阵的转置,然后将4个块拼起来,即可得到需要的输出。

「五分钟学习Tensorflow」tf.nn.depth_to_space()的原理及使用

二、使用场景

可以用来改进特征图上采样过程中出现的问题,特别是在图像超分辨和图像增强的算法中需要对特征图进行上下采样的过程,可以解决插值和解卷积的一些信息丢失的问题,保留了像素的所有信息。


分享到:


相關文章: