tensorflow.pad如何工作?

Jia*_*Liu 4 python deep-learning tensorflow

有tensorflow.pad()的示例:

# 't' =  is [[1, 2, 3], [4, 5, 6]].
# 'paddings' is [[1, 1,], [2, 2]].
#  rank of 't' is 2.
' tf.pad(t, paddings, "CONSTANT")'
==> [[0, 0, 0, 0, 0, 0, 0],
     [0, 0, 1, 2, 3, 0, 0],
     [0, 0, 4, 5, 6, 0, 0],
     [0, 0, 0, 0, 0, 0, 0]]
Run Code Online (Sandbox Code Playgroud)

我的问题是如何在每个输入维度中填充零?并且t的形状为[2,3],为什么pad()之后的输出为[4,x],“ 4”如何出现?感谢您的帮助!!!

vip*_*sal 6

'paddings'是[[1,1,],[2,2]]。尝试将此谷歌映射为[[top,bottom],[left,right]]。即

top = 1,      //Extra padding introduce on top
bottom = 1,   //Extra padding introduce on bottom
left = 2,     //Extra padding introduce on left 
right = 2.    //Extra padding introduce on right
Run Code Online (Sandbox Code Playgroud)

尝试另一个示例,其中“填充”为[[2,1],[2,3]]。输出将是:

[[0 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0]
 [0 0 1 2 3 0 0 0]
 [0 0 4 5 6 0 0 0]
 [0 0 0 0 0 0 0 0]]
Run Code Online (Sandbox Code Playgroud)

此处top = 2,bottom = 1,left = 2,right = 3。


Psi*_*dom 4

文档对此非常清楚。对于输入的每个维度 D,paddings[D, 0] 表示在该维度的张量内容之前添加多少个值,paddings[D, 1] 表示在该维度的张量内容之后添加多少个值。

为什么输出是[4, x]?

4 是维度 0 的大小,维度 0 有 padding [1, 1],根据文档,在t的零维度之前加一,在 t 的零维度之后加一, t的零维度的大小是 2, 2 + 1 + 1,你有 4结果。即它分别在 t 的开头和结尾填充一个零行。类似地,对于维度 1,由于padding[1][2,2] ,因此分别在开头和结尾处向t添加两个零列。