📜  Tensorflow.js tf.losses.meanSquaredError()函数

📅  最后修改于: 2022-05-13 01:56:38.973000             🧑  作者: Mango

Tensorflow.js tf.losses.meanSquaredError()函数

Tensorflow.js 是谷歌开发的开源 JavaScript 库,用于在浏览器和 node.js 环境中运行和训练机器学习模型和深度学习神经网络。

均方误差是预测值和实际值之间的平方差的平均值。结果始终为正数和 0.0 以防万一,但永远不会变为负数。在 tensorflow.js 库中,我们使用tf.losses.meanSquaredError()函数来计算两个张量之间的均方误差。

句法:

tf.losses.meanSquaredError(labels, predictions, weights?, reduction?)

参数:

  • 标签:这是计算预测差异的实际输出张量。它可以是 tf.tensor、typedArray 或普通数组。
  • 预测:这是与标签具有相同维度的预测输出张量。它是 tf.tensor 或 typedArray 或普通数组。
  • 权重:这可以是等级张量,或者等于标签的等级,以便它可以广播,也可以是 0。它是可选的。
  • 减少:对损失应用减少。它是可选的。

返回值: tf.Tensor,由 meanquaredError函数计算得出。

示例 1:在此示例中,我们将两个 2 维张量作为标签,另一个作为预测,然后找到这两者的均方误差。

Javascript
// Importing the tensorflow.js library
const tf = require("@tensorflow/tfjs");
  
// Defining label tensor
const y_true = tf.tensor2d([
    [0., 1., 0.], 
    [0., 0., 0.]
]);
  
// Defining prediction tensor
const y_pred = tf.tensor2d([
    [1., 1., 0.], 
    [1., 0., 0 ]
]);
  
// Calculating mean squared error
const mse = tf.losses.meanSquaredError(y_true,y_pred)
  
// Printing the output
mse.print()


Javascript
// Importing the tensorflow.js library
const tf = require("@tensorflow/tfjs");
  
// Defining label tensor
const y_true = tf.tensor2d(
    [0., 1., 0., 0., 0., 0., 1., 
    0., 1., 1., 0., 1.], [4, 3]
);
  
// Defining predicted tensor
const y_pred = tf.tensor2d(
    [1., 1., 0., 1., 0., 0., 1., 
    1., 1., 0., 0., 1.], [4, 3]
);
  
// Calculating meansquared error
const mse = tf.losses.meanSquaredError(
        y_true, y_pred, [0.7, 0.3, 0.2],)
  
mse.print()


Javascript
// Importing the tensorflow.js library
const tf = require("@tensorflow/tfjs");
  
// Define the model
const model = tf.sequential({
    layers: [tf.layers.dense({ 
        units: 1, inputShape: [12] 
    })],
});
  
// In model compilation we pass
// meanSquaredError as the parameter
  
model.compile(
    { optimizer: "adam", loss: "meanSquaredError" },
    (metrics = ["accuracy"])
);
  
// Evaluate the model which was compiled above
// computation is done in batches of size 4
const result = model.evaluate(
    tf.ones([10, 12]), tf.ones([10, 1]), {
        batchSize: 4,
    }
);
  
// Print the result
result.print();


输出:

Tensor
    0.3333

例 2:同样,我们再举一个例子,我们在 meanSquaredError函数中取标签的 rank 权重,然后计算均方误差。

Javascript

// Importing the tensorflow.js library
const tf = require("@tensorflow/tfjs");
  
// Defining label tensor
const y_true = tf.tensor2d(
    [0., 1., 0., 0., 0., 0., 1., 
    0., 1., 1., 0., 1.], [4, 3]
);
  
// Defining predicted tensor
const y_pred = tf.tensor2d(
    [1., 1., 0., 1., 0., 0., 1., 
    1., 1., 0., 0., 1.], [4, 3]
);
  
// Calculating meansquared error
const mse = tf.losses.meanSquaredError(
        y_true, y_pred, [0.7, 0.3, 0.2],)
  
mse.print()

输出:

Tensor
    0.2000

示例 3:在设计模型的编译函数中,我们使用“均方误差”作为损失参数。以下是一个简单的神经网络,我们在其中进行计算。

Javascript

// Importing the tensorflow.js library
const tf = require("@tensorflow/tfjs");
  
// Define the model
const model = tf.sequential({
    layers: [tf.layers.dense({ 
        units: 1, inputShape: [12] 
    })],
});
  
// In model compilation we pass
// meanSquaredError as the parameter
  
model.compile(
    { optimizer: "adam", loss: "meanSquaredError" },
    (metrics = ["accuracy"])
);
  
// Evaluate the model which was compiled above
// computation is done in batches of size 4
const result = model.evaluate(
    tf.ones([10, 12]), tf.ones([10, 1]), {
        batchSize: 4,
    }
);
  
// Print the result
result.print();

输出:

Tensor
    0.4817

参考: https://js.tensorflow.org/api/3.6.0/#metrics.meanSquaredError