代码之家  ›  专栏  ›  技术社区  ›  TommyBs

TensForFlowJS节点绑定,无法设置自定义优化程序

  •  1
  • TommyBs  · 技术社区  · 7 年前

    我刚开始使用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' } }
    

    所以它看起来是初始化的

    1 回复  |  直到 7 年前
        1
  •  2
  •   Nikhil    7 年前

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

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

    推荐文章