Tensorflow JS nodejs 绑定,无法设置自定义优化器

TensforflowJS nodejs binding, unable to set custom optimzer

我刚刚开始使用 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包运行ning node 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' } }

看来它已经初始化了

您不应该直接在 package.json 中导入 tfjs-core。如果单独导入 tfjs-node,它将导入正确的 tfjs-core 版本。

问题是你有双重依赖(我们会解决)。