如何在tensorflow.js中设置Adam优化器的学习率?

安德鲁

对于tensorflow.js,如何在node.js中设置Adam优化器的学习率?我收到一个错误:

model.optimizer.setLearningRate不是函数

const optimizer = tf.train.adam(0.001)
model.compile({
    loss: 'sparseCategoricalCrossentropy',
    optimizer,
    shuffle: true,
    metrics: ['accuracy']
});

await model.fit(trainValues, trainLabels, {
    epochs: 50,
    validationData: [testValues, testLabels],
    callbacks: {
        onEpochBegin: async (epoch) => {
            const newRate = getNewRate();
            model.optimizer.setLearningRate(newRate);
        }
    }
});
托马斯·唐多夫

调用时model.compile,您可以传递的实例,tf.train.Optimizer而不传递字符串。这些实例是通过tf.train.*工厂创建的,您可以将学习率作为第一个参数。

代码样例

model.compile({
    optimizer: tf.train.sgd(0.000001), // custom learning rate
    /* ... */
});

训练期间改变学习率

当前,只有sgd优化器setLearningRate实现了一种方法,这意味着以下代码仅适用于通过tf.train.sgd以下方式创建的优化器实例

const optimizer = tf.train.sgd(0.001);
optimizer.setLearningRate(0.000001);

使用非官方的API

优化程序实例具有protected属性learningRate,您可以更改。该属性不是公共属性,但由于是JavaScript,因此您可以通过learningRate在对象上进行如下设置来简单地更改值

const optimizer = tf.train.adam();
optimizer.learningRate = 0.000001;
// or via your model:
model.optimizer.learningRate = 0.000001;

请记住,您正在使用API​​的非官方部分,该部分可能随时中断。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章