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

时间:2018-12-17 13:50:45

标签: tensorflow tensorflow.js

我一般只是开始使用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' } }

因此它似乎已初始化

1 个答案:

答案 0 :(得分:2)

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

问题是您有双重依赖关系(我们将解决)。