📅  最后修改于: 2023-12-03 15:05:33.018000             🧑  作者: Mango
在使用 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() 方法的参数说明:
损失函数。可以传递字符串,也可以传递自定义的损失函数。
优化器。可以传递字符串,也可以传递自定义的优化器。
评估指标。可以传递一个字符串数组,也可以传递自定义的评估指标。
所有输出的标量和张量损失函数的权值。
设置模型如何使用样本权重。默认使用不使用样本权重。
将不同的标量损失函数排名加权。
默认情况下,Keras 将采用目标张量列表中的第一个张量来计算损失函数,并将其用于训练、评估和预测。然而,如果您的模型具有多个输出,则可能希望通过目标张量列表指定期望的目标张量,以用于计算损失。
用于计算损失函数的样本权重张量或名称(如果模型具有多个输入)的字典,可将模式 sample_weight_mode 中配置的样本权重的张量予以重写。
分布式训练配置。其中有参数如下:
reduceFn:指定将某个操作应用于一系列设备的方式。
workerWaitForAllReduce:设置在开始另一次迭代之前,工人应等待其参与的所有 all-reduce 等级的同步完成。
aggregationFrequency:设置进行 all-reduce 操作的频率。
tf.LayersModel 类的 .compile() 方法是 TensorFlow.js 构建深度学习模型不可或缺的一个部分。通过 .compile() 方法,您可以将模型的结构和参数组合成一整个模型,并配置其损失函数、优化器等相关参数。必须仔细理解每个参数的作用,才能更好地利用深度学习进行模型训练和预测。