📌  相关文章
📜  Tensorflow.js tf.train.Optimizer 类 .minimize() 方法(1)

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

Tensorflow.js tf.train.Optimizer 类 .minimize() 方法

Tensorflow.js中的tf.train.Optimizer类提供了优化器算法的实现,能够从神经网络的损失函数中自动调整权重来提高模型的表现。该类中的.minimize()方法接受一个损失函数作为输入,然后返回用于最小化损失函数的Operation。

方法签名
abstract minimize(
    f: Tensor | (() => Tensor),
    returnCost?: boolean,
    varList?: OptimizerVariable[],
    replaceNaN?: boolean
): Tensor | [Tensor, Tensor]
参数说明
  • f: Tensor | (() => Tensor) 损失函数,可以是Tensor对象或返回Tensor对象的函数
  • returnCost?: boolean 是否返回损失函数的值,默认为true
  • varList?: OptimizerVariable[] 一个优化器变量的数组,指定只更新这些变量
  • replaceNaN?: boolean 当损失函数包含NaN值时,是否将其替换为0,默认为false
返回值
  • returnCost为true时,返回两个张量的数组,分别是当前迭代的损失函数的值和更新后的变量值
  • returnCost为false时,仅返回更新后的变量值
用法示例
// 创建一个随机的张量作为模型的输入
const input = tf.randomNormal([10]);

// 创建一个具有2个神经元的全连接层
const dense = tf.layers.dense({
    units: 2,
    activation: 'sigmoid',
    inputShape: [10],
});

// 函数式模型
const model = tf.model({
    inputs: input,
    outputs: dense.apply(input),
});

// 定义损失函数
const lossFn = () => model.getWeights()[0].mean();

// 创建一个梯度下降法优化器
const optimizer = tf.train.sgd(0.1);

// 一次迭代优化
optimizer.minimize(lossFn);

// 输出更新后的权重
console.log(model.getWeights()[0]);
代码片段
const input = tf.randomNormal([10]);
const dense = tf.layers.dense({
    units: 2,
    activation: 'sigmoid',
    inputShape: [10],
});
const model = tf.model({
    inputs: input,
    outputs: dense.apply(input),
});
const lossFn = () => model.getWeights()[0].mean();
const optimizer = tf.train.sgd(0.1);
optimizer.minimize(lossFn);
console.log(model.getWeights()[0]);

该代码片段创建了一个随机初始化的模型和一个梯度下降法的优化器,并对其进行了一次迭代优化。输出更新后的权重。