📌  相关文章
📜  Tensorflow.js tf.LayersModel 类 .evaluate() 方法(1)

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

TensorFlow.js tf.LayersModel 类 .evaluate() 方法

在TensorFlow.js中,使用tf.LayersModel类的evaluate()方法可以对模型进行评估。

语法
evaluate(
  x: Tensor|Tensor[]|{[inputName: string]: Tensor},
  y?: Tensor|Tensor[]|{[outputName: string]: Tensor},
  config?: ModelEvaluateConfig
): Scalar|Scalar[]

参数:

  • x: 输入数据张量 TensorTensor 数组,或者是一个对象,其 inputName 属性指向其对应的输入张量。
  • y: 标签数据张量 TensorTensor 数组,或者是一个对象,其 outputName 属性指向其对应的标签张量。可选项。
  • config: 一个包含评估配置的对象。可选项。

返回值:

  • 当模型只有一个输出时,返回一个 Scalar,否则返回 Scalar 数组。
示例
import * as tf from '@tensorflow/tfjs';

// 定义模型
const model = tf.sequential();
model.add(tf.layers.dense({units: 1, inputShape: [1]}));
model.compile({loss: 'meanSquaredError', optimizer: 'sgd'});

// 准备训练数据
const xs = tf.tensor2d([1, 2, 3, 4], [4, 1]);
const ys = tf.tensor2d([1, 3, 5, 7], [4, 1]);

// 训练模型
model.fit(xs, ys, {epochs: 10}).then(() => {
  // 对模型进行评估
  const xTest = tf.tensor2d([5], [1, 1]);
  const yTest = tf.tensor2d([9], [1, 1]);
  const result = model.evaluate(xTest, yTest);
  result.print();
});

以上代码定义了一个简单的线性回归模型,并使用训练数据对其进行训练。然后使用 evaluate() 方法对模型进行评估,传入一个输入张量和一个标签张量,返回一个 Scalar,表示该模型在输入和标签数据下的误差。

在此示例中,输出应该接近于 4.0,即为预测值与真实值的均方误差。

备注

evaluate() 方法是一个异步方法,返回一个Promise对象。当评估操作完成时,Promise对象被解析为一个值(Scalar 或 Scalar 数组)。可以通过使用 .then()await 语句处理异步返回结果。