我一般只是开始使用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处的文档还暗示第一个代码段应返回SGDOptimizer。
有人知道我在做什么错吗?
我正在使用以下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' } }
因此它似乎已初始化
答案 0 :(得分:2)
您不应直接在您的package.json中导入tfjs-core。如果仅导入tfjs-node,它将导入正确的tfjs-core版本。
问题是您有双重依赖关系(我们将解决)。