【问题标题】:Tensorflow giving false resultsTensorFlow 给出错误的结果
【发布时间】: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


【解决方案1】:

对于您的模型,只有一个 epoch 可供训练。结果,该模型没有像您建议的那样给出错误的结果。我宁愿说它给出的是随机结果。 发生的情况如下:在第一个 epoch 中,层的权重是随机初始化的。简单地改变 epoch 的数量会带来更好的结果。

还可以在初始化期间通过在设置dense layer 时调用initializer 来获取kernelInitializer 的值来自定义权重。

这是一个用 10 个 epoch 训练的模型,它比只用一个 epoch 的模型表现得更好

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, {epochs: 100}).then(() => {
model.predict(tf.tensor2d([.05,.06,.02,.03], [2, 2])).print();
});
<html>
  <head>
    <!-- Load TensorFlow.js -->
    <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@0.13.0"> </script>
  </head>

  <body>
  </body>
</html>

可以找到类似的答案here

【讨论】:

    猜你喜欢
    • 2022-07-26
    • 2014-09-16
    • 2011-11-15
    • 2019-02-06
    • 2014-01-30
    • 2018-08-01
    • 2016-08-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多