📜  Tensorflow.js tf.Sequential 类 .evaluateDataset() 方法(1)

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

TensorFlow.js tf.Sequential 类 .evaluateDataset() 方法

TensorFlow.js 是一款在浏览器或 Node.js 环境中可以运行的深度学习框架。其中,tf.Sequential 类是 TensorFlow.js 中的序列模型类,它可以让你构建层次模型。.evaluateDataset() 方法是 tf.Sequential 类中的一个方法,用于在给定数据集上评估此识别模型。

evaluateDataset() 方法的用途

.evaluateDataset() 方法可用于评估序列模型在给定数据集上的性能。该方法会在数据集上迭代,将数据分批加载到内存中,并使用指定的 batch size 将每个批次传递到序列模型进行计算。

evaluateDataset() 方法的语法

.evaluateDataset(dataset: Dataset, callbacks: ModelEvaluateDatasetCallbacks, batchSize = null, verbose = 1)

参数说明:

  • dataset:一个 Dataset 对象,包含输入值 x 和目标值 y,可用于评估性能。
  • callbacks:回调函数对象,用于在迭代结束时执行的回调。
  • batchSize:一个可选的整数值,用于指定内存中每个批次的大小。默认值是 null,表示将使用 Dataset 对象中的默认 batch size。
  • verbose:一个可选的整数值,用于指定是否打印过程日志。默认值是 1,表示输出日志。设为 0 则不输出。
evaluateDataset() 方法的返回值

方法 .evaluateDataset() 会返回一个 Promise 对象,该对象包含模型在给定数据集上的评估性能指标。

evaluateDataset() 方法的示例代码

以下示例代码展示如何使用 .evaluateDataset() 方法评估序列模型的性能。

const model = tf.sequential({
  layers: [
    tf.layers.dense({inputShape: [10], units: 5, activation: 'relu'}),
    tf.layers.dense({units: 3, activation: 'softmax'})
  ]
});

model.compile({optimizer: 'adam', loss: 'categoricalCrossentropy'});

// 创建数据集
const xs = tf.ones([20, 10]);
const ys = tf.ones([20, 3]);
const dataset = tf.data.zip({xs: xs, ys: ys}).batch(4);

// 评估模型性能
model.evaluateDataset(dataset)
  .then((result) => {
    console.log(result);
  });

以上示例代码创建了一个简单的序列模型,其中包含两个密集层,分别包含 5 个和 3 个神经元。接着使用 .compile() 方法指定了优化器和损失函数。

然后,创建了一个数据集(包含 20 个样本),每个样本包含 10 个特征和 3 个目标值。这个数据集被分成了每个批次包含 4 个样本的子集。

最后,通过调用 .evaluateDataset() 方法在数据集上评估模型的性能。该方法返回一个 Promise 对象,包含了模型在给定数据集上的性能指标。在本示例中,结果将在控制台中打印出来。