我一般只是从tensorflowjs和tensorflow入门,遇到了一个我无法完全解决的问题。我正在尝试更改优化器的学习率,但是一旦我使用自定义优化器,就会收到以下错误:
User-defined optimizer must be an instance of tf.Optimizer
要创建我的模型,我正在执行以下操作(从此处的文档中删除):
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' } }
看来它已初始化
您不应该直接在package.json中导入tfjs-core。如果仅导入tfjs-node,它将导入正确的tfjs-core版本。
问题是您有双重依赖关系(我们将解决)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句