📜  Tensorflow.js tf.pad()函数(1)

📅  最后修改于: 2023-12-03 15:05:33.223000             🧑  作者: Mango

Tensorflow.js tf.pad()函数介绍

tf.pad()函数是Tensorflow.js提供的一个函数,用于将张量的形状设置为指定形状并在边界处填充指定的值。它可用于处理卷积神经网络等深度学习模型的输入数据。

语法
tf.pad(
    x,
    paddings,
    mode = 'CONSTANT',
    constantValue = 0
)
  • x: 需要填充的张量。
  • paddings: 要添加的填充量。它是一个由两个整数的列表或列表的列表组成,其表示的是在各个轴上需要添加的填充量的数量。例如,[[1,1],[2,2]]表示在第一个轴(行)上添加1个填充值,在第二个轴(列)上添加2个填充值。
  • mode(可选):指定要使用的填充模式。默认为常量填充模式。
  • constantValue(可选):在常量填充模式下使用的常量值。默认为0。
返回值

tf.pad()返回一个张量并且其形状是新的张量,同时包括填充的数值。

样例

以下是一个简单的样例示例,我们将创建一个2 x 2的矩阵,并在它的周围添加1个填充值。

import * as tf from '@tensorflow/tfjs';

async function main() {
  const x = tf.tensor2d([[1, 2], [3, 4]]);
  const paddings = [[1, 1], [1, 1]];
  const result = tf.pad(x, paddings);
  result.print(); // 输出填充后的张量
}

main();

输出结果:

Tensor
    [[0, 0, 0, 0, 0],
     [0, 1, 2, 0, 0],
     [0, 3, 4, 0, 0],
     [0, 0, 0, 0, 0]]
填充模式

tf.pad()支持以下三种填充模式:

  1. CONSTANT (默认): 在张量的边缘填充常数值
  2. REFLECT: 周期性地填充张量的边缘
  3. SYMMETRIC: 以对称的方式填充张量的边缘

下面是使用不同填充模式的样例,以说明三种填充模式的不同结果。

CONSTANT填充模式的样例
const x = tf.tensor2d([[1, 2], [3, 4]]);
const paddings = [[1, 1], [1, 1]];
const result = tf.pad(x, paddings, 'CONSTANT', 0);

输出结果:

Tensor
    [[0, 0, 0, 0, 0],
     [0, 1, 2, 0, 0],
     [0, 3, 4, 0, 0],
     [0, 0, 0, 0, 0]]
REFLECT填充模式的样例
const x = tf.tensor2d([[1, 2], [3, 4]]);
const paddings = [[1, 1], [1, 1]];
const result = tf.pad(x, paddings, 'REFLECT');

输出结果:

Tensor
    [[4, 3, 4, 3,],
     [2, 1, 2, 1,],
     [4, 3, 4, 3,],
     [2, 1, 2, 1,]]
SYMMETRIC填充模式的样例
const x = tf.tensor2d([[1, 2], [3, 4]]);
const paddings = [[1, 1], [1, 1]];
const result = tf.pad(x, paddings, 'SYMMETRIC');

输出结果:

Tensor
    [[2, 1, 2, 3,],
     [4, 3, 4, 1,],
     [2, 1, 2, 3,],
     [4, 3, 4, 1,]]