【发布时间】:2018-09-10 19:41:06
【问题描述】:
这是我能想出的最简单的问题来测试tf 的准确性。但是,它并没有给我令人满意的结果。我有自己的模型,对于这样的问题,他们甚至不需要训练,因为错误已经为零。我的理解/代码等有问题吗?它应该给出准确的答案,即.11, .06(我的 .net 模型可以)
const model = tf.sequential();
model.add(tf.layers.dense({units: 1, inputShape: [2]}));
model.compile({loss: 'meanSquaredError', optimizer: 'sgd'});
const xs = tf.tensor2d([.01, .02, .03, .04, .05, .06], [3, 2]);
const ys = tf.tensor2d([.03, .07, .11], [3, 1]);
model.fit(xs, ys).then(() => {
model.predict(tf.tensor2d([.05,.06,.02,.03], [2, 2])).print();
});
【问题讨论】:
-
您可能想要标记您正在编写的语言。Tensorflow 主要 API 是在 python 中,这不是 python。然而,你唯一的标签是 tensorflow。但是不要紧。实际上,当您调用 fit() 时,您正在使用 SGD 训练模型。而且我不确定您为什么认为您的模型不需要培训。您不初始化权重或任何东西,因此您的模型需要以某种方式学习它们。
-
感谢@MadWombat,现在添加了 JS 标签。我知道 TF 需要培训。其他定制模型可能会有所不同。对于这样的问题,即使您将所有权重设置为“1”,预测线也应该几乎与实际线重叠,因为问题太简单了。这就是我的意思。然而,TF(训练后)仍然给出了非常不令人满意的结果。为什么?
-
您没有初始化权重,因此它们可能设置为 0。您没有将任何配置传递给 fit(),因此它可能只执行了一次反向传播。所以你最终会得到一些非常随机的结果。我不知道你为什么感到惊讶。
-
如果你明确地将你的权重设置为 1,你会神奇地得到更好的结果。
-
@MadWombat 你如何在 tf.js 中初始化权重?
标签: javascript tensorflow tensorflow.js