1 pad()
tf.pad函数主要是用来对tensor的大小进行扩展,包括水平、垂直、深度(通道)等,方法定义如下:
pad(tensor, paddings, mode=“CONSTANT”, name=None, constant_values=0)
输入参数:
tensor:输入的tensor
paddings:设置填充的大小
mode:填充方式,默认是CONSTANT,还有REFLECT和SYMMETRIC
name:名称
constant_values:CONSTANT填充方式的填充值,默认是0
参数paddings必须是形状为(n, 2)的一个list,这里的n是tensor的秩,也就是维度大小。例如当tensor为一个shape为(12,)的tensor时,paddings必须是形如[[x,y]]的一个list,x表示在第一维度前填充值的个数,y表示在第一维度后填充值的个数:
In [3]: import tensorflow as tf
In [4]: a=tf.range(1,13)
In [5]: a
Out[5]: <tf.Tensor: id=7, shape=(12,), dtype=int32, numpy=array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])>
In [6]: tf.pad(a,[[3,0]]) # 3表示在第一维度前填充3个0,0表示不填充
Out[6]: <tf.Tensor: id=10, shape=(15,), dtype=int32, numpy=array([ 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])>
当tensor是二维时,paddings必须是shape为(2,2)的list:
In [8]: a=tf.reshape(a,[3,4])
In [9]: a
Out[9]:
<tf.Tensor: id=13, shape=(3, 4), dtype=int32, numpy=
array([[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12]])>
In [10]: tf.pad(a,[[1,1],[3,0]]) # 第一维度前后各填充一行,第二维度前填充两行,后不填充,填充值为3
Out[10]:
<tf.Tensor: id=16, shape=(5, 7), dtype=int32, numpy=
array([[ 0, 0, 0, 0, 0, 0, 0],
[ 0, 0, 0, 1, 2, 3, 4],
[ 0, 0, 0, 5, 6, 7, 8],
[ 0, 0, 0, 9