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

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

Tensorflow.js tf.norm()函数

在TensorFlow.js中,tf.norm()函数用于计算向量或矩阵的L2范数,也称为欧几里得范数。

语法
tf.norm(x, ord, axis, keepDims);

参数说明:

  • x: 张量
  • ord: 范数类型,常见的为1(L1范数),2(L2范数),Inf(无穷范数)等。默认值为2
  • axis:指定计算范数的维度。默认值为null,表示计算整个张量的范数。
  • keepDims:布尔值,指定是否保留范数计算后的维度。默认为false,表示不保留。
返回值

返回一个张量,包含一个或多个元素的L2范数。

示例
const x = tf.tensor2d([[1, 2], [3, 4]]);
const result = tf.norm(x);
result.print(); //输出5.477

const y = tf.tensor([1, -2, 3, -4]);
const result2 = tf.norm(y, 1);
result2.print(); //输出10

const z = tf.tensor([1, -2, 3, -4]);
const result3 = tf.norm(z, Infinity);
result3.print(); //输出4

在上面的示例中,我们使用了tf.tensor2d()和tf.tensor()函数来创建一个二维张量和一维张量,然后分别计算了它们的L2范数、L1范数和无穷范数。输出结果分别为5.477、10和4。

在实战中使用

tf.norm()函数可以在很多机器学习任务中使用,如正则化、损失函数的计算等。在训练神经网络时,我们通常会使用正则化以避免过拟合。我们可以使用L2范数来对权重进行正则化,计算方式为将所有权重的平方和开方,然后乘以一个正则化系数。

const weight = tf.variable(tf.tensor([[1, 2], [3, 4]]));
const regularizer = tf.mul(tf.norm(weight), lambda);
const loss = tf.add(tf.mean(tf.square(yhat.sub(y))), regularizer);

在上面的示例中,我们首先创建了一个变量weight用于存储模型参数,然后计算了L2范数,并乘以一个正则化系数lambda,最后将正则化项加入损失函数中。这样可以有效地控制模型的复杂度,提高泛化能力。