tensorflow.pad如何工作?

时间:2017-05-12 03:05:13

标签: python tensorflow deep-learning

有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]]

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

2 个答案:

答案 0 :(得分:5)

“ 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

尝试另一个示例,其中“填充”为[[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]]

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

答案 1 :(得分:4)

文档非常明确。 对于输入的每个维度D,填充[D,0]表示在该维度中张量的内容之前要添加的值,填充[D,1]表示在内容之后要添加的值的数量在那个方面的张量。

  

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

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