我刚开始使用TensorFlowJS和TensorFlow,一般来说,我遇到了一个我无法完全解决的问题。我正在尝试更改优化器的学习速率,但一旦我使用自定义优化器,就会收到以下错误:
User-defined optimizer must be an instance of tf.Optimizer
为了创建我的模型,我做了以下工作(从文档中提取
here
):
const model = tf.sequential();
model.add(tf.layers.dense({units:1, inputShape:[11]}));
model.compile({
optimizer: tf.train.sgd(0.000001),
loss: 'meanSquaredError'
});
据我所知,一切都应该有效。如果我只是传入默认的“sgd”优化器,它确实有效。
model.compile({loss:'meanSquaredError', optimizer:'sgd'});
和文档在
https://js.tensorflow.org/api/latest/index.html#train.sgd
也意味着第一个代码段应该返回sgdoptimer。
有人知道我做错了什么吗?
我正在使用以下TensorFlow包运行节点V8
"@tensorflow/tfjs-core": "^0.14.2",
"@tensorflow/tfjs-node": "^0.1.21",
如果我创建了我的优化程序并将其存储在一个单独的变量中。该var的console.log给出以下内容:
SGDOptimizer {
learningRate: 0.000001,
c:
Tensor {
isDisposedInternal: false,
shape: [],
dtype: 'float32',
size: 1,
strides: [],
dataId: {},
id: 4,
rankType: '0' } }
所以它看起来是初始化的