tensorflow中的tf.pad()函数的用法

tensorflow版本2.x
tf.pad()函数用来对tensor某个维度进行填充或者复制,有3种用法:

  1. CONSTANT(填充常数),
  2. REFLECT(镜像复制),
  3. SYMMETRIC(对称复制);

用法

CONSTANT

t = tf.constant([[1, 2, 3], [4, 5, 6]])
paddings = tf.constant([[1, 2], [5, 2]])
print(t)
t2 = tf.pad(t, paddings, "CONSTANT")
print(t2)

运行结果:

tf.Tensor(
[[1 2 3]
 [4 5 6]], shape=(2, 3), dtype=int32)
.Tensor: shape=(5, 10), dtype=int32, numpy=
array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 1, 2, 3, 0, 0],
       [0, 0, 0, 0, 0, 4, 5, 6, 0, 0],
       [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]], dtype=int32)>

此处paddings 中的[1, 2]代表第一个维度前面填充1行,后面填充2行;
[5,2]代表第二个维度前面填充5列,后面填充2列;
如果要填充其他常数,可以使用tf.pad(t, paddings, "CONSTANT", 1)

REFLECT

t = tf.constant([[1, 2, 3], [4, 5, 6]])
paddings = tf.constant([[1, 1], [2, 2]])
print(t)

t2 = tf.pad(t, paddings, "REFLECT")
t2

运行结果

tf.Tensor(
[[1 2 3]
 [4 5 6]], shape=(2, 3), dtype=int32)
.Tensor: shape=(4, 7), dtype=int32, numpy=
array([[6, 5, 4, 5, 6, 5, 4],
       [3, 2, 1, 2, 3, 2, 1],
       [6, 5, 4, 5, 6, 5, 4],
       [3, 2, 1, 2, 3, 2, 1]], dtype=int32)>

此处[1, 1]代表第一个维度前面镜像复制一行(以原来的第一行作为对称轴,如下图),后面复制一行,其他类似
在这里插入图片描述

SYMMETRIC

此方法与REFLECT类似,区别在于没有对称轴

t = tf.constant([[1, 2, 3], [4, 5, 6]])
paddings = tf.constant([[1, 1], [2, 2]])
print(t)

t2 = tf.pad(t, paddings, "SYMMETRIC")
t2

运行结果

tf.Tensor(
[[1 2 3]
 [4 5 6]], shape=(2, 3), dtype=int32)
.Tensor: shape=(4, 7), dtype=int32, numpy=
array([[2, 1, 1, 2, 3, 3, 2],
       [2, 1, 1, 2, 3, 3, 2],
       [5, 4, 4, 5, 6, 6, 5],
       [5, 4, 4, 5, 6, 6, 5]], dtype=int32)>

在这里插入图片描述

你可能感兴趣的:(学术研究,tensorflow,人工智能,python)