函数的作用:
对张量按照你的需求进行填充
定义在:tensorflow/python/ops/array_ops.py
函数原型:
pad(
tensor,
paddings,
mode='CONSTANT',
name=None
)
参数说明:
tensor: A 'Tensor'. #tensor是要填充的张量;
paddings: A 'Tensor' of type 'int32'. #paddings也是一个张量,是需要扩张的维度,代表每一维填充多少行和列
(注意!!paddings的rank也就是秩一定要和要填充的tensor的秩一样才行),类型是Int32;
mode: One of "CONSTANT", "REFLECT", or "SYMMETRIC" (case-insensitive) #mode可选三个值,分别是"CONSTANT","REFLECT"和"SYMMETRIC",代表三种不同的填充方式
name: A name for the operation (optional). #pad操作的重命名,一般不需要管,默认是None
mode参数详细说明:
mode="CONSTANT" 是填充0
mode="REFLECT"是映射填充,上下(1维)填充顺序和paddings是相反的,左右(零维)顺序补齐
mode="SYMMETRIC"是对称填充,上下(1维)填充顺序是和paddings相同的,左右(零维)对称补齐
返回值说明:
A 'Tensor'. Has the same type as 'tensor'.
即返回值也是一个Tensor,类型和参数'tensor'是一样的。
举例说明:
本例使用的tensor都是rank=2的,注意paddings的rank也要等于2,否则会报错:
Example1:
t=[[2,3,4],[5,6,7]], paddings=[[1,1],[2,2]], mode="CONSTANT"
那么sess.run(tf.pad(t,paddings,"CONSTANT"))的输出结果为:
array([[0, 0, 0, 0, 0, 0, 0],
[0, 0, 2, 3, 4, 0, 0],
[0, 0, 5, 6, 7, 0, 0],
[0, 0, 0, 0, 0, 0, 0]], dtype=int32)
mode="CONSTANT"这种填充模式是最简单的,一看就能明白
上,下,左,右分别填充了1行、1行以及2列、2列
刚好和paddings=[[1,1],[2,2]]相等,
然后全部用0填充
Example 2:
t=[[2,3,4],[5,6,7]], paddings=[[1,2],[2,3]],mode="CONSTANT"