📜  Tensorflow.js tf.LayersModel 类 .compile() 方法(1)

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

TensorFlow.js tf.LayersModel 类的 .compile() 方法

简述

在使用 TensorFlow.js 构建深度学习模型时,tf.LayersModel 类的 .compile() 方法是必不可少的。该方法用于将模型的结构和参数组合成一整个模型,并配置其损失函数、优化器等相关参数。把这些参数传递给 .compile() 方法后,就可以使用 .fit() 方法进行模型的训练和 .predict() 方法进行预测了。

使用方法

因为 .compile() 方法会接受许多参数,因此需要仔细理解每个参数的作用。

基础用法

下面是最基本的 .compile() 方法使用方法,其中损失函数是 'meanSquaredError',优化器是 'sgd',评估指标是 'accuracy':

model.compile({
  loss: 'meanSquaredError',
  optimizer: 'sgd',
  metrics: ['accuracy'],
});
高级用法

下面是更加高级的用法,其中定义了自定义的损失函数、优化器和自定义的评估指标:

const myLossFunction = (yTrue, yPred) => {
  return tf.mean(tf.absolute(yTrue.sub(yPred)));
};

const myOptimizer = tf.train.adam();

const myMetrics = [
  tf.metrics.binaryAccuracy(),
  tf.metrics.categoricalAccuracy(),
];

model.compile({
  loss: myLossFunction,
  optimizer: myOptimizer,
  metrics: myMetrics,
});
参数说明

以下是 .compile() 方法的参数说明:

loss

损失函数。可以传递字符串,也可以传递自定义的损失函数。

optimizer

优化器。可以传递字符串,也可以传递自定义的优化器。

metrics

评估指标。可以传递一个字符串数组,也可以传递自定义的评估指标。

lossWeights

所有输出的标量和张量损失函数的权值。

sampleWeightMode

设置模型如何使用样本权重。默认使用不使用样本权重。

weightedMetrics

将不同的标量损失函数排名加权。

targetTensors

默认情况下,Keras 将采用目标张量列表中的第一个张量来计算损失函数,并将其用于训练、评估和预测。然而,如果您的模型具有多个输出,则可能希望通过目标张量列表指定期望的目标张量,以用于计算损失。

sampleWeight

用于计算损失函数的样本权重张量或名称(如果模型具有多个输入)的字典,可将模式 sample_weight_mode 中配置的样本权重的张量予以重写。

distributed

分布式训练配置。其中有参数如下:

  • reduceFn:指定将某个操作应用于一系列设备的方式。

  • workerWaitForAllReduce:设置在开始另一次迭代之前,工人应等待其参与的所有 all-reduce 等级的同步完成。

  • aggregationFrequency:设置进行 all-reduce 操作的频率。

总结

tf.LayersModel 类的 .compile() 方法是 TensorFlow.js 构建深度学习模型不可或缺的一个部分。通过 .compile() 方法,您可以将模型的结构和参数组合成一整个模型,并配置其损失函数、优化器等相关参数。必须仔细理解每个参数的作用,才能更好地利用深度学习进行模型训练和预测。