「五分鐘學習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()的原理及使用

二、使用場景

可以用來改進特徵圖上採樣過程中出現的問題,特別是在圖像超分辨和圖像增強的算法中需要對特徵圖進行上下采樣的過程,可以解決插值和解卷積的一些信息丟失的問題,保留了像素的所有信息。


分享到:


相關文章: