阅读(14.5k) 书签 (0)

TensorFlow填充张量函数:tf.pad

2018-11-08 11:49 更新
tf.pad 函数
pad ( 
    tensor , 
    paddings , 
    mode = 'CONSTANT' , 
    name = None , 
    constant_values = 0 
)

定义在:tensorflow/python/ops/array_ops.py.

参见指南:张量变换>分割和连接

填充张量.

此操作根据您指定的 paddings 来填充一个 tensor.paddings 是一个具有形状 [n, 2] 的整数张量,其中 n 是 tensor 的秩.对于每个输入维度 D,paddings [D, 0] 表示在该维度的 tensor 内容之前要添加多少个值,而 paddings[D, 1] 表示在该维度中的 tensor 内容之后要添加多少值.如果 mode 是 “REFLECT”,那么这两个paddings[D, 0] 和 paddings[D, 1] 不得大于 tensor.dim_size(D) - 1.如果 mode 是 “SYMMETRIC”,那么这两个 paddings[D, 0] 和 paddings[D, 1] 不得大于tensor.dim_size(D).

输出的每个维度 D 的填充大小是:

paddings[D, 0] + tensor.dim_size(D) + paddings[D, 1]

例如:

# 't' is [[1, 2, 3], [4, 5, 6]].
# 'paddings' is [[1, 1,], [2, 2]].
# 'constant_values' is 0.
# rank of 't' is 2.
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]]

pad(t, paddings, "REFLECT") ==> [[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]]

pad(t, paddings, "SYMMETRIC") ==> [[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]]

参数:

  • tensor:张量.
  • paddings:int32 类型的张量.
  • mode:取值为 "CONSTANT"、"REFLECT" 或 "SYMMETRIC"(不区分大小写)
  • name:操作的名称(可选).
  • constant_values:在 “CONSTANT” 模式下,要使用的标量填充值,必须与 tensor 具有相同类型.

返回:

该函数返回一个张量,与 tensor 具有相同的类型.

可能引发的异常:

  • ValueError:模式不是 "CONSTANT"、"REFLECT" 或 "SYMMETRIC" 中的一种时.